Message ID | 25d503f0-c330-1401-2ed6-693c97fa8970@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Thanks for taking care of this! Applying.--b. On Sun, Feb 05, 2017 at 10:02:01PM +0800, Kinglong Mee wrote: > Tigran Mkrtchyan's pynfs testcase for zero length principals fail as, > > 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 return nfserr_inval directly. > It should be check after decoding in nfs4xdr.c, but it's simple before > process in nfsd_map_xxxx, so adds it in nfs4idmap.c. > > Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> > --- > fs/nfsd/nfs4idmap.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/fs/nfsd/nfs4idmap.c b/fs/nfsd/nfs4idmap.c > index 5b20577..6b9b6cc 100644 > --- a/fs/nfsd/nfs4idmap.c > +++ b/fs/nfsd/nfs4idmap.c > @@ -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)) > -- > 2.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/nfsd/nfs4idmap.c b/fs/nfsd/nfs4idmap.c index 5b20577..6b9b6cc 100644 --- a/fs/nfsd/nfs4idmap.c +++ b/fs/nfsd/nfs4idmap.c @@ -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))
Tigran Mkrtchyan's pynfs testcase for zero length principals fail as, 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 return nfserr_inval directly. It should be check after decoding in nfs4xdr.c, but it's simple before process in nfsd_map_xxxx, so adds it in nfs4idmap.c. Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> --- fs/nfsd/nfs4idmap.c | 8 ++++++++ 1 file changed, 8 insertions(+)