From: Kinglong Mee Date: Sat, 24 May 2014 03:19:57 +0000 (+0800) Subject: NFSD: Error out when getting more than one fsloc/secinfo/uuid X-Git-Tag: next-20140530~92^2 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=9fb1b4db6e8fae0419b08d87f1f10733808d2dff;p=karo-tx-linux.git NFSD: Error out when getting more than one fsloc/secinfo/uuid Signed-off-by: Kinglong Mee Signed-off-by: J. Bruce Fields --- diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c index 788405107006..13b85f94d9e2 100644 --- a/fs/nfsd/export.c +++ b/fs/nfsd/export.c @@ -389,6 +389,10 @@ fsloc_parse(char **mesg, char *buf, struct nfsd4_fs_locations *fsloc) int len; int migrated, i, err; + /* more than one fsloc */ + if (fsloc->locations) + return -EINVAL; + /* listsize */ err = get_uint(mesg, &fsloc->locations_count); if (err) @@ -442,6 +446,10 @@ static int secinfo_parse(char **mesg, char *buf, struct svc_export *exp) u32 listsize; int err; + /* more than one secinfo */ + if (exp->ex_nflavors) + return -EINVAL; + err = get_uint(mesg, &listsize); if (err) return err; @@ -481,6 +489,10 @@ uuid_parse(char **mesg, char *buf, unsigned char **puuid) { int len; + /* more than one uuid */ + if (*puuid) + return -EINVAL; + /* expect a 16 byte uuid encoded as \xXXXX... */ len = qword_get(mesg, buf, PAGE_SIZE); if (len != EX_UUID_LEN)