]> granicus.if.org Git - shadow/commitdiff
* lib/sgetpwent.c, lib/sgetgrent.c: Use get_uid and get_gid to
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sat, 21 Mar 2009 20:29:58 +0000 (20:29 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sat, 21 Mar 2009 20:29:58 +0000 (20:29 +0000)
validate the UIDs or GIDs instead of atoi/strtol.

ChangeLog
lib/sgetgrent.c
lib/sgetpwent.c

index ea7f235fd81b78654edbc8fc984e47e367a61a98..8aac68075e2237098fb176d34d4b00760043f6d9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-03-21  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * lib/sgetpwent.c, lib/sgetgrent.c: Use get_uid and get_gid to
+       validate the UIDs or GIDs instead of atoi/strtol.
+
 2009-03-21  Nicolas François  <nicolas.francois@centraliens.net>
 
        * libmisc/get_gid.c, libmisc/get_uid.c, libmisc/Makefile.am,
index 186ee40fd91b8811ed3a10a49ade7a8ccb819155..206f1c591b1e06692c323c73f5f66e923ad86fa4 100644 (file)
@@ -141,7 +141,9 @@ struct group *sgetgrent (const char *buf)
        }
        grent.gr_name = grpfields[0];
        grent.gr_passwd = grpfields[1];
-       grent.gr_gid = atoi (grpfields[2]);
+       if (get_gid (grpfields[2], &grent.gr_gid) == 0) {
+               return (struct group *) 0;
+       }
        grent.gr_mem = list (grpfields[3]);
        if (NULL == grent.gr_mem) {
                return (struct group *) 0;      /* out of memory */
index 421d6464643b61c1548a483b05ef07028cf823d8..8a60a63bf053b9b9c801417ee7c7c3a96a3d7608 100644 (file)
@@ -108,14 +108,10 @@ struct passwd *sgetpwent (const char *buf)
 
        pwent.pw_name = fields[0];
        pwent.pw_passwd = fields[1];
-       pwent.pw_uid = strtol (fields[2], &ep, 10);
-       /* FIXME: (0 == pwent.pw_uid) does not look correct -- nekral */
-       if ((0 == pwent.pw_uid) && ('\0' != *ep)) {
+       if (get_uid (fields[2], &pwent.pw_uid) == 0) {
                return NULL;
        }
-       /* FIXME: (0 == pwent.pw_gid) does not look correct -- nekral */
-       pwent.pw_gid = strtol (fields[3], &ep, 10);
-       if ((0 == pwent.pw_gid) && ('\0' != *ep)) {
+       if (get_gid (fields[3], &pwent.pw_gid) == 0) {
                return NULL;
        }
        pwent.pw_gecos = fields[4];