Index: configure =================================================================== RCS file: /sndio/sndio/configure,v retrieving revision 1.31 diff -u -r1.31 configure --- configure 9 Sep 2015 17:32:30 -0000 1.31 +++ configure 28 Nov 2015 22:44:14 -0000 @@ -54,14 +54,24 @@ ldadd="-lrt" user=sndiod so="$so libsndio.so" - defs='-D_GNU_SOURCE -DDEV_RANDOM=\\"/dev/urandom\\"' + defs='-D_GNU_SOURCE -DDEV_RANDOM=\\"/dev/urandom\\" \\\ + -DHAVE_SETRESGID -DHAVE_SETRESUID' + ;; + NetBSD) + sun=no + rmidi=yes + user=_sndio + so="$so libsndio.so" + defs='-DHAVE_ARC4RANDOM -DHAVE_ISSETUGID \\\ + -DHAVE_STRLCAT -DHAVE_STRLCPY' ;; OpenBSD) sun=yes rmidi=yes user=_sndio defs='-DHAVE_ARC4RANDOM -DHAVE_ISSETUGID \\\ - -DHAVE_STRLCAT -DHAVE_STRLCPY -DHAVE_STRTONUM' + -DHAVE_STRLCAT -DHAVE_STRLCPY -DHAVE_STRTONUM \\\ + -DHAVE_SETRESGID -DHAVE_SETRESUID' ;; esac Index: sndiod/sndiod.c =================================================================== RCS file: /sndio/sndio/sndiod/sndiod.c,v retrieving revision 1.22 diff -u -r1.22 sndiod.c --- sndiod/sndiod.c 25 Nov 2015 19:50:17 -0000 1.22 +++ sndiod/sndiod.c 28 Nov 2015 22:44:14 -0000 @@ -289,8 +289,18 @@ if (setpriority(PRIO_PROCESS, 0, SNDIO_PRIO) < 0) err(1, "setpriority"); if (setgroups(1, &pw->pw_gid) || - setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) || - setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid)) +#if HAVE_SETRESGID + setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) +#else + setegid(pw->pw_gid) +#endif + || +#if HAVE_SETRESUID + setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) +#else + seteuid(pw->pw_gid) +#endif + ) err(1, "cannot drop privileges"); }