NFSD: Error out when getting more than one fsloc/secinfo/uuid
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
index 7884051..13b85f9 100644
--- a/fs/nfsd/export.c
+++ b/fs/nfsd/export.c
@@ -389,6 +389,10 @@
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 @@
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 @@
{
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)