mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-05 03:44:03 +08:00
sunrpc: Properly decode kuids and kgids in RPC_AUTH_UNIX credentials
When reading kuids from the wire map them into the initial user namespace, and validate the mapping succeded. When reading kgids from the wire map them into the initial user namespace, and validate the mapping succeded. Cc: "J. Bruce Fields" <bfields@fieldses.org> Cc: Trond Myklebust <Trond.Myklebust@netapp.com> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
25da926371
commit
f025adf191
@ -821,8 +821,10 @@ svcauth_unix_accept(struct svc_rqst *rqstp, __be32 *authp)
|
||||
argv->iov_base = (void*)((__be32*)argv->iov_base + slen); /* skip machname */
|
||||
argv->iov_len -= slen*4;
|
||||
|
||||
cred->cr_uid = svc_getnl(argv); /* uid */
|
||||
cred->cr_gid = svc_getnl(argv); /* gid */
|
||||
cred->cr_uid = make_kuid(&init_user_ns, svc_getnl(argv)); /* uid */
|
||||
cred->cr_gid = make_kgid(&init_user_ns, svc_getnl(argv)); /* gid */
|
||||
if (!uid_valid(cred->cr_uid) || !gid_valid(cred->cr_gid))
|
||||
goto badcred;
|
||||
slen = svc_getnl(argv); /* gids length */
|
||||
if (slen > 16 || (len -= (slen + 2)*4) < 0)
|
||||
goto badcred;
|
||||
|
Loading…
Reference in New Issue
Block a user