[51522] trunk/base/src
pguyot at kallisys.net
pguyot at kallisys.net
Wed May 27 03:30:01 PDT 2009
Revision: 51522
http://trac.macports.org/changeset/51522
Author: pguyot at kallisys.net
Date: 2009-05-27 03:30:00 -0700 (Wed, 27 May 2009)
Log Message:
-----------
Escalation & dropping priviledges: properly get the current gid (fixes #19131)
Modified Paths:
--------------
trunk/base/src/pextlib1.0/Pextlib.c
trunk/base/src/pextlib1.0/uid.c
trunk/base/src/pextlib1.0/uid.h
trunk/base/src/port1.0/portutil.tcl
Modified: trunk/base/src/pextlib1.0/Pextlib.c
===================================================================
--- trunk/base/src/pextlib1.0/Pextlib.c 2009-05-27 08:48:05 UTC (rev 51521)
+++ trunk/base/src/pextlib1.0/Pextlib.c 2009-05-27 10:30:00 UTC (rev 51522)
@@ -1165,6 +1165,7 @@
Tcl_CreateObjCommand(interp, "setegid", setegidCmd, NULL, NULL);
Tcl_CreateObjCommand(interp, "name_to_uid", name_to_uidCmd, NULL, NULL);
Tcl_CreateObjCommand(interp, "uid_to_name", uid_to_nameCmd, NULL, NULL);
+ Tcl_CreateObjCommand(interp, "uname_to_gid", uname_to_gidCmd, NULL, NULL);
Tcl_CreateObjCommand(interp, "name_to_gid", name_to_gidCmd, NULL, NULL);
Tcl_CreateObjCommand(interp, "gid_to_name", gid_to_nameCmd, NULL, NULL);
Modified: trunk/base/src/pextlib1.0/uid.c
===================================================================
--- trunk/base/src/pextlib1.0/uid.c 2009-05-27 08:48:05 UTC (rev 51521)
+++ trunk/base/src/pextlib1.0/uid.c 2009-05-27 10:30:00 UTC (rev 51522)
@@ -39,6 +39,8 @@
#include "uid.h"
+#include "errno.h"
+
/*
getuid
@@ -274,7 +276,43 @@
}
/*
+ uname_to_gid
+
+ synopsis: uname_to_gid name
+ this function takes a *user* name
+*/
+int uname_to_gidCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
+{
+ struct passwd *pwent;
+ char* name = NULL;
+
+ /* Check the arg count */
+ if (objc != 2) {
+ Tcl_WrongNumArgs(interp, 1, objv, "name");
+ return TCL_ERROR;
+ }
+
+ /* Get the name */
+ name = Tcl_GetString(objv[1]);
+ if (name == NULL || !*name)
+ return TCL_ERROR;
+
+ /* Map the name --> uid */
+ pwent = getpwnam(name);
+
+ if (pwent == NULL)
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(-1));
+ else
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(pwent->pw_gid));
+
+ return TCL_OK;
+}
+
+/*
name_to_gid
+
+ synopsis: name_to_gid name
+ this function takes a *group* name
*/
int name_to_gidCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
{
Modified: trunk/base/src/pextlib1.0/uid.h
===================================================================
--- trunk/base/src/pextlib1.0/uid.h 2009-05-27 08:48:05 UTC (rev 51521)
+++ trunk/base/src/pextlib1.0/uid.h 2009-05-27 10:30:00 UTC (rev 51522)
@@ -45,6 +45,7 @@
int setegidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
int name_to_uidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
int uid_to_nameCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
+int uname_to_gidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
int name_to_gidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
int gid_to_nameCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
Modified: trunk/base/src/port1.0/portutil.tcl
===================================================================
--- trunk/base/src/port1.0/portutil.tcl 2009-05-27 08:48:05 UTC (rev 51521)
+++ trunk/base/src/port1.0/portutil.tcl 2009-05-27 10:30:00 UTC (rev 51522)
@@ -2427,7 +2427,7 @@
#seteuid [name_to_uid [file attributes $workpath -owner]]
#setegid [name_to_gid [file attributes $workpath -group]]
- setegid [name_to_gid "$macportsuser"]
+ setegid [uname_to_gid "$macportsuser"]
seteuid [name_to_uid "$macportsuser"]
ui_debug "egid changed to: [getegid]"
ui_debug "euid changed to: [geteuid]"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090527/69b8ef52/attachment.html>
More information about the macports-changes
mailing list