Author: msergeant
Date: Thu Mar 13 12:56:25 2008
New Revision: 856
Modified:
trunk/qpsmtpd-async
Log:
Drop privileges properly (Radu Greab)
Modified: trunk/qpsmtpd-async
==============================================================================
--- trunk/qpsmtpd-async (original)
+++ trunk/qpsmtpd-async Thu Mar 13 12:56:25 2008
@@ -264,7 +264,15 @@
# Drop priviledges
my (undef, undef, $quid, $qgid) = getpwnam $USER or
die "unable to determine uid/gid for $USER\n";
- $) = "";
+ my $groups = "$qgid $qgid";
+ while (my (undef, undef, $gid, $members) = getgrent) {
+ my @m = split(/ /, $members);
+ if (grep { $_ eq $USER } @m) {
+ $groups .= " $gid";
+ }
+ }
+ endgrent;
+ $) = $groups;
POSIX::setgid($qgid) or
die "unable to change gid: $!\n";
POSIX::setuid($quid) or