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

Reply via email to