Commit 03bc6d1cc1759e6b5959cacc02a19ef36e95e741
1 parent
ab8e4aee0a
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
nfsd: Modify nfsd4_cb_sec to use kuids and kgids
Change uid and gid in struct nfsd4_cb_sec to be of type kuid_t and kgid_t. In nfsd4_decode_cb_sec when reading uids and gids off the wire convert them to kuids and kgids, and if they don't convert to valid kuids or valid kuids ignore RPC_AUTH_UNIX and don't fill in any of the fields. Cc: "J. Bruce Fields" <bfields@fieldses.org> Cc: Trond Myklebust <Trond.Myklebust@netapp.com> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Showing 2 changed files with 12 additions and 5 deletions Side-by-side Diff
fs/nfsd/nfs4xdr.c
... | ... | @@ -464,9 +464,16 @@ |
464 | 464 | READ32(dummy); |
465 | 465 | READ_BUF(dummy * 4); |
466 | 466 | if (cbs->flavor == (u32)(-1)) { |
467 | - cbs->uid = uid; | |
468 | - cbs->gid = gid; | |
469 | - cbs->flavor = RPC_AUTH_UNIX; | |
467 | + kuid_t kuid = make_kuid(&init_user_ns, uid); | |
468 | + kgid_t kgid = make_kgid(&init_user_ns, gid); | |
469 | + if (uid_valid(kuid) && gid_valid(kgid)) { | |
470 | + cbs->uid = kuid; | |
471 | + cbs->gid = kgid; | |
472 | + cbs->flavor = RPC_AUTH_UNIX; | |
473 | + } else { | |
474 | + dprintk("RPC_AUTH_UNIX with invalid" | |
475 | + "uid or gid ignoring!\n"); | |
476 | + } | |
470 | 477 | } |
471 | 478 | break; |
472 | 479 | case RPC_AUTH_GSS: |
fs/nfsd/state.h