[108790] branches/gsoc13-tests/src/port1.0/tests/portactivate.test

cal at macports.org cal at macports.org
Thu Aug 1 16:12:19 PDT 2013


Revision: 108790
          https://trac.macports.org/changeset/108790
Author:   cal at macports.org
Date:     2013-08-01 16:12:19 -0700 (Thu, 01 Aug 2013)
Log Message:
-----------
portactivate.test:

 - provide a (commented) way to enable debug and verbose output
 - in activate_start test:
	- set prefix to a value that always exists and isn't writable for non-root
	  even when MacPorts isn't installed in /opt/local
	- add $euid and $egid which are required for privilege escalation
	- fail when privilege escalation fails

Modified Paths:
--------------
    branches/gsoc13-tests/src/port1.0/tests/portactivate.test

Modified: branches/gsoc13-tests/src/port1.0/tests/portactivate.test
===================================================================
--- branches/gsoc13-tests/src/port1.0/tests/portactivate.test	2013-08-01 22:38:49 UTC (rev 108789)
+++ branches/gsoc13-tests/src/port1.0/tests/portactivate.test	2013-08-01 23:12:19 UTC (rev 108790)
@@ -6,8 +6,12 @@
 
 package require macports 1.0
 package provide portinstall 1.0
-mportinit
 
+array set ui_options {}
+#set ui_options(ports_debug)   yes
+#set ui_options(ports_verbose) yes
+mportinit ui_options
+
 source ../portactivate.tcl
 source ../portdeactivate.tcl
 source ../portinstall.tcl
@@ -101,14 +105,26 @@
 } -body {
     if {[getuid] != 0} {return "FAIL: not root, skipping test"}
 
-    set prefix /opt/local
+    # file writable $prefix is used to determine whether privilege escalation
+    # is needed, so set prefix to a directory unwritable for this user
+    set prefix /usr/bin
+
+    # elevateToRoot uses $euid and $egid as the IDs to set
+    set euid 0
+    set egid 0
+
+    # drop privileges; the code won't attempt to elevate privileges without
+    # that
     seteuid 333
-    if {[catch {portactivate::activate_start args}] != 1} {
-	return "FAIL: couldn't elevate privileges"
+    if {[catch {portactivate::activate_start args}] != 0} {
+        return "FAIL: couldn't elevate privileges"
     }
+
+    # when uid == 0 and euid == 0, the code will not attempt to elevate
+    # privileges
     seteuid 0
     if {[catch {portactivate::activate_start args}] != 0} {
-	return "FAIL: couldn't elevate privileges"
+        return "FAIL: couldn't elevate privileges"
     }
     return "Activate_start successful."
 } -result "Activate_start successful."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20130801/bc30cfe3/attachment-0001.html>


More information about the macports-changes mailing list