From 9030e7c44aa75345336673c0252974ead4eb8364 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 6 Aug 2004 09:25:59 +0000 Subject: Update. 2004-07-30 Guido Guenther * nss/getent.c (passwd_keys): Use strtoul instead of isdigit to test if the key is numeric or not. (group_keys): Likewise. --- nss/getent.c | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) (limited to 'nss/getent.c') diff --git a/nss/getent.c b/nss/getent.c index 26df38068a..bcc363dccf 100644 --- a/nss/getent.c +++ b/nss/getent.c @@ -206,16 +206,13 @@ group_keys (int number, char *key[]) for (i = 0; i < number; ++i) { - if (isdigit (key[i][0])) - { - char *ep; - gid_t arg_gid = strtoul (key[i], &ep, 10); + errno = 0; + char *ep; + gid_t arg_gid = strtoul(key[i], &ep, 10); - if (*key[i] != '\0' && *ep == '\0') /* valid numeric uid */ - grp = getgrgid (arg_gid); - else - grp = NULL; - } + if (errno != EINVAL && *key[i] != '\0' && *ep == '\0') + /* Valid numeric gid. */ + grp = getgrgid (arg_gid); else grp = getgrnam (key[i]); @@ -481,16 +478,13 @@ passwd_keys (int number, char *key[]) for (i = 0; i < number; ++i) { - if (isdigit (key[i][0])) - { - char *ep; - uid_t arg_uid = strtoul (key[i], &ep, 10); - - if (*key[i] != '\0' && *ep == '\0') /* valid numeric uid */ - pwd = getpwuid (arg_uid); - else - pwd = NULL; - } + errno = 0; + char *ep; + uid_t arg_uid = strtoul(key[i], &ep, 10); + + if (errno != EINVAL && *key[i] != '\0' && *ep == '\0') + /* Valid numeric uid. */ + pwd = getpwuid (arg_uid); else pwd = getpwnam (key[i]); -- cgit 1.4.1