Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a570abbb authored by Eric W. Biederman's avatar Eric W. Biederman
Browse files

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: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
parent 9e469e30
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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 */