Revision
81630
Author
jmr@macports.org
Date
2011-08-02 23:13:57 -0700 (Tue, 02 Aug 2011)

Log Message

return to previous privilege level when done in adduser and addgroup

Modified Paths

Diff

Modified: trunk/base/src/port1.0/portutil.tcl (81629 => 81630)


--- trunk/base/src/port1.0/portutil.tcl	2011-08-03 05:33:54 UTC (rev 81629)
+++ trunk/base/src/port1.0/portutil.tcl	2011-08-03 06:13:57 UTC (rev 81630)
@@ -2075,6 +2075,7 @@
         return
     } elseif {[geteuid] != 0} {
         seteuid 0; setegid 0
+        set escalated 1
     }
 
     set passwd {*}
@@ -2117,6 +2118,10 @@
         ui_warn "adduser is not implemented on ${os.platform}."
         ui_warn "The requested user '$name' was not created."
     }
+
+    if {[info exists escalated]} {
+        dropPrivileges
+    }
 }
 
 proc addgroup {name args} {
@@ -2128,6 +2133,7 @@
         return
     } elseif {[geteuid] != 0} {
         seteuid 0; setegid 0
+        set escalated 1
     }
 
     set gid [nextgid]
@@ -2158,6 +2164,10 @@
         ui_warn "addgroup is not implemented on ${os.platform}."
         ui_warn "The requested group was not created."
     }
+
+    if {[info exists escalated]} {
+        dropPrivileges
+    }
 }
 
 # proc to calculate size of a directory