[123881] trunk/base/src/macports1.0/macports.tcl

larryv at macports.org larryv at macports.org
Fri Aug 15 10:08:24 PDT 2014


Revision: 123881
          https://trac.macports.org/changeset/123881
Author:   larryv at macports.org
Date:     2014-08-15 10:08:23 -0700 (Fri, 15 Aug 2014)
Log Message:
-----------
macports.tcl: Improve port sync debug messages.

Modified Paths:
--------------
    trunk/base/src/macports1.0/macports.tcl

Modified: trunk/base/src/macports1.0/macports.tcl
===================================================================
--- trunk/base/src/macports1.0/macports.tcl	2014-08-15 16:17:48 UTC (rev 123880)
+++ trunk/base/src/macports1.0/macports.tcl	2014-08-15 17:08:23 UTC (rev 123881)
@@ -2319,24 +2319,32 @@
                     if {
                         [catch {
                             if {[getuid] == 0} {
-                                set euid [geteuid]
-                                set egid [getegid]
-                                ui_debug "changing euid/egid - current euid: $euid - current egid: $egid"
-                                setegid [name_to_gid [file attributes $portdir -group]]
-                                seteuid [name_to_uid [file attributes $portdir -owner]]
+                                # Must change egid before dropping root euid.
+                                set old_egid [getegid]
+                                set new_egid [name_to_gid [file attributes $portdir -group]]
+                                setegid $new_egid
+                                ui_debug "Changed effective group ID from $old_egid to $new_egid"
+                                set old_euid [geteuid]
+                                set new_euid [name_to_uid [file attributes $portdir -owner]]
+                                seteuid $new_euid
+                                ui_debug "Changed effective user ID from $old_euid to $new_euid"
                             }
                             system $svn_commandline
                             if {[getuid] == 0} {
-                                seteuid $euid
-                                setegid $egid
+                                seteuid $old_euid
+                                ui_debug "Changed effective user ID from $new_euid to $old_euid"
+                                setegid $old_egid
+                                ui_debug "Changed effective group ID from $new_egid to $old_egid"
                             }
                         }]
                     } {
                         ui_debug $::errorInfo
                         ui_error "Synchronization of the local ports tree failed doing an svn update"
                         if {[getuid] == 0} {
-                            seteuid $euid
-                            setegid $egid
+                            seteuid $old_euid
+                            ui_debug "Changed effective user ID from $new_euid to $old_euid"
+                            setegid $old_egid
+                            ui_debug "Changed effective group ID from $new_egid to $old_egid"
                         }
                         incr numfailed
                         continue
@@ -2353,24 +2361,32 @@
                     if {
                         [catch {
                             if {[getuid] == 0} {
-                                set euid [geteuid]
-                                set egid [getegid]
-                                ui_debug "changing euid/egid - current euid: $euid - current egid: $egid"
-                                setegid [name_to_gid [file attributes $portdir -group]]
-                                seteuid [name_to_uid [file attributes $portdir -owner]]
+                                # Must change egid before dropping root euid.
+                                set old_egid [getegid]
+                                set new_egid [name_to_gid [file attributes $portdir -group]]
+                                setegid $new_egid
+                                ui_debug "Changed effective group ID from $old_egid to $new_egid"
+                                set old_euid [geteuid]
+                                set new_euid [name_to_uid [file attributes $portdir -owner]]
+                                seteuid $new_euid
+                                ui_debug "Changed effective user ID from $old_euid to $new_euid"
                             }
                             system $git_commandline
                             if {[getuid] == 0} {
-                                seteuid $euid
-                                setegid $egid
+                                seteuid $old_euid
+                                ui_debug "Changed effective user ID from $new_euid to $old_euid"
+                                setegid $old_egid
+                                ui_debug "Changed effective group ID from $new_egid to $old_egid"
                             }
                         }]
                     } {
                         ui_debug $::errorInfo
                         ui_error "Synchronization of the local ports tree failed doing a git update"
                         if {[getuid] == 0} {
-                            seteuid $euid
-                            setegid $egid
+                            seteuid $old_euid
+                            ui_debug "Changed effective user ID from $new_euid to $old_euid"
+                            setegid $old_egid
+                            ui_debug "Changed effective group ID from $new_egid to $old_egid"
                         }
                         incr numfailed
                         continue
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20140815/b1a8c908/attachment.html>


More information about the macports-changes mailing list