nfsd/idmap: return nfserr_inval for 0-length names
Tigran Mkrtchyan's new pynfs testcases for zero length principals fail: SATT16 st_setattr.testEmptyPrincipal : FAILURE Setting empty owner should return NFS4ERR_INVAL, instead got NFS4ERR_BADOWNER SATT17 st_setattr.testEmptyGroupPrincipal : FAILURE Setting empty owner_group should return NFS4ERR_INVAL, instead got NFS4ERR_BADOWNER This patch checks the principal and returns nfserr_inval directly. It could check after decoding in nfs4xdr.c, but it's simpler to do it in nfsd_map_xxxx. Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
d6fc8821c2
commit
c3821b3497
@ -628,6 +628,10 @@ nfsd_map_name_to_uid(struct svc_rqst *rqstp, const char *name, size_t namelen,
|
||||
{
|
||||
__be32 status;
|
||||
u32 id = -1;
|
||||
|
||||
if (name == NULL || namelen == 0)
|
||||
return nfserr_inval;
|
||||
|
||||
status = do_name_to_id(rqstp, IDMAP_TYPE_USER, name, namelen, &id);
|
||||
*uid = make_kuid(&init_user_ns, id);
|
||||
if (!uid_valid(*uid))
|
||||
@ -641,6 +645,10 @@ nfsd_map_name_to_gid(struct svc_rqst *rqstp, const char *name, size_t namelen,
|
||||
{
|
||||
__be32 status;
|
||||
u32 id = -1;
|
||||
|
||||
if (name == NULL || namelen == 0)
|
||||
return nfserr_inval;
|
||||
|
||||
status = do_name_to_id(rqstp, IDMAP_TYPE_GROUP, name, namelen, &id);
|
||||
*gid = make_kgid(&init_user_ns, id);
|
||||
if (!gid_valid(*gid))
|
||||
|
Loading…
Reference in New Issue
Block a user