daemon: reset gids too, not just uids

This commit is contained in:
Lennart Poettering 2009-08-14 19:28:18 +02:00
parent fecd0dc801
commit a1598c742e

View file

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