sunrpc: Properly encode kuids and kgids in RPC_AUTH_UNIX credentials
When writing kuids onto the wire first map them into the initial user namespace. When writing kgids onto the wire first map them into the initial user namespace. 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
9e469e30d7
commit
a570abbb96
|
@ -157,11 +157,11 @@ unx_marshal(struct rpc_task *task, __be32 *p)
|
|||
*/
|
||||
p = xdr_encode_array(p, clnt->cl_nodename, clnt->cl_nodelen);
|
||||
|
||||
*p++ = htonl((u32) cred->uc_uid);
|
||||
*p++ = htonl((u32) cred->uc_gid);
|
||||
*p++ = htonl((u32) from_kuid(&init_user_ns, cred->uc_uid));
|
||||
*p++ = htonl((u32) from_kgid(&init_user_ns, cred->uc_gid));
|
||||
hold = p++;
|
||||
for (i = 0; i < 16 && gid_valid(cred->uc_gids[i]); i++)
|
||||
*p++ = htonl((u32) cred->uc_gids[i]);
|
||||
*p++ = htonl((u32) from_kgid(&init_user_ns, cred->uc_gids[i]));
|
||||
*hold = htonl(p - hold - 1); /* gid array length */
|
||||
*base = htonl((p - base - 1) << 2); /* cred length */
|
||||
|
||||
|
|
Loading…
Reference in a new issue