[Initng-svn] r3164 - in initng/tags/0.5.4.1/plugins: find suid
svn at initng.thinktux.net
svn at initng.thinktux.net
Wed Mar 1 02:47:36 CET 2006
Author: deac
Date: Wed Mar 1 02:47:36 2006
New Revision: 3164
Modified:
initng/tags/0.5.4.1/plugins/find/initng_find.c
initng/tags/0.5.4.1/plugins/suid/initng_suid.c
Log:
0.5.4.1: suid, find updated
Modified: initng/tags/0.5.4.1/plugins/find/initng_find.c
==============================================================================
--- initng/tags/0.5.4.1/plugins/find/initng_find.c (original)
+++ initng/tags/0.5.4.1/plugins/find/initng_find.c Wed Mar 1 02:47:36 2006
@@ -14,8 +14,8 @@
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#include "../../src/initng.h"
@@ -29,7 +29,7 @@
#include <assert.h>
#include <sys/types.h>
#include <dirent.h>
- /*#include <dirent.h> *//* opendir() closedir() */
+ /*#include <dirent.h> *//* opendir() closedir() */
#include "../../src/initng_global.h"
#include "../../src/initng_string_tools.h"
@@ -145,19 +145,13 @@
continue;
}
- printf("parse row \"%s\"\n", point);
/* check if first word is a match */
if (strncasecmp(point, from, from_len) != 0)
{
- printf("Not the one");
JUMP_TO_NEXT_ROW(point);
continue;
}
- printf("point[from_len]='%c', point[from_len+1]='%c'\n",
- point[from_len], point[from_len + 1]);
-
-
if (!point[from_len] || !point[from_len + 1]
|| point[from_len] != '=')
{
@@ -175,7 +169,6 @@
ret = i_strndup(point_result, i);
free(file_content);
- printf("ret=\"%s\", len=%i\n", ret, i);
return (ret);
}
free(file_content);
Modified: initng/tags/0.5.4.1/plugins/suid/initng_suid.c
==============================================================================
--- initng/tags/0.5.4.1/plugins/suid/initng_suid.c (original)
+++ initng/tags/0.5.4.1/plugins/suid/initng_suid.c Wed Mar 1 02:47:36 2006
@@ -55,38 +55,35 @@
assert(service->name);
assert(process);
- tmp = initng_active_db_get_string(&SUID, service);
- username = fix_variables(tmp, service);
- free((void*)tmp);
-
- i = strcspn(username, ":");
- if (username[i] == ':')
- {
- groupname = strdup(username + i + 1);
- username[i] = 0;
- }
- else if ((tmp = initng_active_db_get_string(&SGID, service)))
+ if ((tmp = initng_active_db_get_string(&SGID, service)))
{
groupname = fix_variables(tmp, service);
}
- free((void*)tmp);
- group = getgrnam(groupname);
- passwd = getpwnam(username);
+ tmp = initng_active_db_get_string(&SUID, service);
+ if (tmp)
+ username = fix_variables(tmp, service);
- if (group)
- gid = group->gr_gid;
- else if (groupname)
+ if (username && !groupname)
{
- F_("GROUP \"%s\" not found!\n", groupname);
- ret += 1;
+ i = strcspn(username, ":");
+ if (username[i] == ':')
+ {
+ groupname = strdup(username + i + 1);
+ username[i] = 0;
+ }
}
+
+ if (groupname)
+ group = getgrnam(groupname);
+ if (username)
+ passwd = getpwnam(username);
+
if (passwd)
{
uid = passwd->pw_uid;
- if (!gid)
- gid = passwd->pw_gid;
+ gid = passwd->pw_gid;
}
else if (username)
{
@@ -94,13 +91,22 @@
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);
setgid(gid);
}
- initgroups(passwd->pw_name, passwd->pw_gid);
+ if (passwd)
+ initgroups(passwd->pw_name, passwd->pw_gid);
if (uid)
{
@@ -108,10 +114,11 @@
setuid(uid);
}
- free(groupname);
- free(username);
- free(group);
- free(passwd);
+ if (groupname)
+ free(groupname);
+ if (username)
+ free(username);
+ /* group and passwd are static data structures - don't free */
return ret;
}
More information about the Initng-svn
mailing list