[Initng-svn] r3162 - initng/trunk/plugins/suid

svn at initng.thinktux.net svn at initng.thinktux.net
Wed Mar 1 02:10:20 CET 2006


Author: makomk
Date: Wed Mar  1 02:10:19 2006
New Revision: 3162

Modified:
   initng/trunk/plugins/suid/initng_suid.c
Log:
Hopefully fix sgid


Modified: initng/trunk/plugins/suid/initng_suid.c
==============================================================================
--- initng/trunk/plugins/suid/initng_suid.c	(original)
+++ initng/trunk/plugins/suid/initng_suid.c	Wed Mar  1 02:10:19 2006
@@ -55,14 +55,15 @@
     assert(service->name);
     assert(process);
 
-    if (tmp = initng_active_db_get_string(&SUID, service))
+    if ((tmp = initng_active_db_get_string(&SGID, service)))
     {
-        username = fix_variables(tmp, service);
-        free(tmp);
-        tmp = NULL;
+        groupname = fix_variables(tmp, service);
     }
 
-    if (username)
+    tmp = initng_active_db_get_string(&SUID, service);
+    if(tmp) username = fix_variables(tmp, service);
+
+    if(username && !groupname)
     {
         i = strcspn(username, ":");
         if (username[i] == ':')
@@ -70,32 +71,18 @@
             groupname = strdup(username + i + 1);
             username[i] = 0;
         }
-        else if ((tmp = initng_active_db_get_string(&SGID, service)))
-        {
-            groupname = fix_variables(tmp, service);
-            free(tmp);
-            tmp = NULL;
-        }
     }
+    
 
     if (groupname)
         group = getgrnam(groupname);
     if (username)
         passwd = getpwnam(username);
 
-    if (group)
-        gid = group->gr_gid;
-    else if (groupname)
-    {
-        F_("GROUP \"%s\" not found!\n", groupname);
-        ret += 1;
-    }
-
     if (passwd)
     {
         uid = passwd->pw_uid;
-        if (!gid)
-            gid = passwd->pw_gid;
+	gid = passwd->pw_gid;
     }
     else if (username)
     {
@@ -103,6 +90,14 @@
         ret += 2;
     }
 
+    if (group)
+        gid = group->gr_gid;
+    else if (groupname)
+    {
+        F_("GROUP \"%s\" not found!\n", groupname);
+        ret += 1;
+    }
+
     if (gid)
     {
         D_("Change to gid %i", gid);


More information about the Initng-svn mailing list