Validate the max_uid/max_gid boundaries and entry type in pw.conf
This commit is contained in:
parent
50698e6718
commit
e5e7ef48eb
@ -230,6 +230,7 @@ read_userconfig(char const * file)
|
||||
char *buf, *p;
|
||||
size_t linecap;
|
||||
ssize_t linelen;
|
||||
const char *errstr;
|
||||
|
||||
buf = NULL;
|
||||
linecap = 0;
|
||||
@ -323,20 +324,35 @@ read_userconfig(char const * file)
|
||||
? NULL : newstr(q);
|
||||
break;
|
||||
case _UC_MINUID:
|
||||
if ((q = unquote(q)) != NULL && isdigit(*q))
|
||||
config.min_uid = (uid_t) atol(q);
|
||||
if ((q = unquote(q)) != NULL) {
|
||||
errstr = NULL;
|
||||
config.min_uid = strtounum(q, 0, UID_MAX, &errstr);
|
||||
if (errstr)
|
||||
warnx("Invalid min_uid: '%s', ignoring", q);
|
||||
}
|
||||
break;
|
||||
case _UC_MAXUID:
|
||||
if ((q = unquote(q)) != NULL && isdigit(*q))
|
||||
config.max_uid = (uid_t) atol(q);
|
||||
if ((q = unquote(q)) != NULL) {
|
||||
errstr = NULL;
|
||||
config.max_uid = strtounum(q, 0, UID_MAX, &errstr);
|
||||
if (errstr)
|
||||
warnx("Invalid max_uid: '%s', ignoring", q);
|
||||
}
|
||||
break;
|
||||
case _UC_MINGID:
|
||||
if ((q = unquote(q)) != NULL && isdigit(*q))
|
||||
config.min_gid = (gid_t) atol(q);
|
||||
errstr = NULL;
|
||||
config.min_gid = strtounum(q, 0, GID_MAX, &errstr);
|
||||
if (errstr)
|
||||
warnx("Invalid min_gid: '%s', ignoring", q);
|
||||
break;
|
||||
case _UC_MAXGID:
|
||||
if ((q = unquote(q)) != NULL && isdigit(*q))
|
||||
config.max_gid = (gid_t) atol(q);
|
||||
if ((q = unquote(q)) != NULL) {
|
||||
errstr = NULL;
|
||||
config.max_gid = strtounum(q, 0, GID_MAX, &errstr);
|
||||
if (errstr)
|
||||
warnx("Invalid max_gid: '%s', ignoring", q);
|
||||
}
|
||||
break;
|
||||
case _UC_EXPIRE:
|
||||
if ((q = unquote(q)) != NULL && isdigit(*q))
|
||||
|
Loading…
Reference in New Issue
Block a user