Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5874:5fa84de81413 HEAD
Allow uid/gid names that begin with numbers, as long as it's not completely
a number.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 03 Jul 2007 03:29:23 +0300 |
parents | 592a69a21b53 |
children | cda9824bab63 |
files | src/auth/userdb.c |
diffstat | 1 files changed, 14 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/userdb.c Tue Jul 03 03:24:46 2007 +0300 +++ b/src/auth/userdb.c Tue Jul 03 03:29:23 2007 +0300 @@ -49,12 +49,17 @@ uid_t userdb_parse_uid(struct auth_request *request, const char *str) { struct passwd *pw; + uid_t uid; + char *p; if (str == NULL) return (uid_t)-1; - if (*str >= '0' && *str <= '9') - return (uid_t)strtoul(str, NULL, 10); + if (*str >= '0' && *str <= '9') { + uid = (uid_t)strtoul(str, &p, 10); + if (*p == '\0') + return uid; + } pw = getpwnam(str); if (pw == NULL) { @@ -70,12 +75,17 @@ gid_t userdb_parse_gid(struct auth_request *request, const char *str) { struct group *gr; + gid_t gid; + char *p; if (str == NULL) return (gid_t)-1; - if (*str >= '0' && *str <= '9') - return (gid_t)strtoul(str, NULL, 10); + if (*str >= '0' && *str <= '9') { + gid = (gid_t)strtoul(str, &p, 10); + if (*p == '\0') + return gid; + } gr = getgrnam(str); if (gr == NULL) {