]> code.delx.au - pulseaudio/commitdiff
daemon: reset gids too, not just uids
authorLennart Poettering <lennart@poettering.net>
Fri, 14 Aug 2009 17:28:18 +0000 (19:28 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 14 Aug 2009 17:28:18 +0000 (19:28 +0200)
src/daemon/caps.c

index 69e58cc0e1e0a8dfe8cb40b64d8945b67c1e6ce2..76b62e03e80f217fefc12bf4d934430868167a96 100644 (file)
@@ -57,21 +57,29 @@ void pa_drop_root(void) {
 
 #ifdef HAVE_GETUID
     uid_t uid;
+    gid_t gid;
 
     pa_log_debug(_("Cleaning up privileges."));
     uid = getuid();
+    gid = getgid();
 
 #if defined(HAVE_SETRESUID)
     pa_assert_se(setresuid(uid, uid, uid) >= 0);
+    pa_assert_se(setresgid(gid, gid, gid) >= 0);
 #elif defined(HAVE_SETREUID)
     pa_assert_se(setreuid(uid, uid) >= 0);
+    pa_assert_se(setregid(gid, gid) >= 0);
 #else
     pa_assert_se(setuid(uid) >= 0);
     pa_assert_se(seteuid(uid) >= 0);
+    pa_assert_se(setgid(gid) >= 0);
+    pa_assert_se(setegid(gid) >= 0);
 #endif
 
     pa_assert_se(getuid() == uid);
     pa_assert_se(geteuid() == uid);
+    pa_assert_se(getgid() == gid);
+    pa_assert_se(getegid() == gid);
 #endif
 
 #ifdef HAVE_SYS_PRCTL_H