From d4fc74e43c97b73088fc379c9392c24b0ad6a1e6 Mon Sep 17 00:00:00 2001 From: nekral-guest Date: Sat, 21 Mar 2009 20:29:58 +0000 Subject: [PATCH] * lib/sgetpwent.c, lib/sgetgrent.c: Use get_uid and get_gid to validate the UIDs or GIDs instead of atoi/strtol. --- ChangeLog | 5 +++++ lib/sgetgrent.c | 4 +++- lib/sgetpwent.c | 8 ++------ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index ea7f235f..8aac6807 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-21 Nicolas François + + * 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 * libmisc/get_gid.c, libmisc/get_uid.c, libmisc/Makefile.am, diff --git a/lib/sgetgrent.c b/lib/sgetgrent.c index 186ee40f..206f1c59 100644 --- a/lib/sgetgrent.c +++ b/lib/sgetgrent.c @@ -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 */ diff --git a/lib/sgetpwent.c b/lib/sgetpwent.c index 421d6464..8a60a63b 100644 --- a/lib/sgetpwent.c +++ b/lib/sgetpwent.c @@ -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]; -- 2.40.0