user-util: never hand out or accept invalid UIDs
libc isn't that strict, but it's a good idea if we are, to not create confusion around invalid user ids.
This commit is contained in:
parent
d02608170e
commit
67c7c892b9
|
@ -138,11 +138,19 @@ int get_user_creds(
|
|||
if (!p)
|
||||
return errno > 0 ? -errno : -ESRCH;
|
||||
|
||||
if (uid)
|
||||
*uid = p->pw_uid;
|
||||
if (uid) {
|
||||
if (!uid_is_valid(p->pw_uid))
|
||||
return -EBADMSG;
|
||||
|
||||
*uid = p->pw_uid;
|
||||
}
|
||||
|
||||
if (gid) {
|
||||
if (!gid_is_valid(p->pw_gid))
|
||||
return -EBADMSG;
|
||||
|
||||
if (gid)
|
||||
*gid = p->pw_gid;
|
||||
}
|
||||
|
||||
if (home)
|
||||
*home = p->pw_dir;
|
||||
|
@ -185,8 +193,12 @@ int get_group_creds(const char **groupname, gid_t *gid) {
|
|||
if (!g)
|
||||
return errno > 0 ? -errno : -ESRCH;
|
||||
|
||||
if (gid)
|
||||
if (gid) {
|
||||
if (!gid_is_valid(g->gr_gid))
|
||||
return -EBADMSG;
|
||||
|
||||
*gid = g->gr_gid;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -278,6 +290,9 @@ int in_gid(gid_t gid) {
|
|||
if (getegid() == gid)
|
||||
return 1;
|
||||
|
||||
if (!gid_is_valid(gid))
|
||||
return -EINVAL;
|
||||
|
||||
ngroups_max = sysconf(_SC_NGROUPS_MAX);
|
||||
assert(ngroups_max > 0);
|
||||
|
||||
|
|
Loading…
Reference in a new issue