diff options
Diffstat (limited to 'src/socket.c')
-rw-r--r-- | src/socket.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/socket.c b/src/socket.c index aa01543..40c7aa7 100644 --- a/src/socket.c +++ b/src/socket.c @@ -24,12 +24,15 @@ switch_eids (uid_t *puid, gid_t *pgid, mode_t *pumask) gid_t ogid = getegid (); mode_t omask = umask (*pumask); + if ((*puid && *puid != ouid) || (*pgid && *pgid != ogid)) + { if (setegid (*pgid)) logmsg (LOG_ERR, _("cannot switch to EGID %lu: %s"), (unsigned long) *pgid, strerror (errno)); if (seteuid (*puid)) logmsg (LOG_ERR, _("cannot switch to EUID %lu: %s"), (unsigned long) *puid, strerror (errno)); + } *puid = ouid; *pgid = ogid; *pumask = omask; @@ -637,4 +640,3 @@ pies_pause (void) } } } - |