Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be69da80 authored by Kinglong Mee's avatar Kinglong Mee Committed by J. Bruce Fields
Browse files

NFSD: Error out when getting more than one fsloc/secinfo/uuid

parent 1f53146d
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -389,6 +389,10 @@ fsloc_parse(char **mesg, char *buf, struct nfsd4_fs_locations *fsloc)
	int len;
	int len;
	int migrated, i, err;
	int migrated, i, err;


	/* more than one fsloc */
	if (fsloc->locations)
		return -EINVAL;

	/* listsize */
	/* listsize */
	err = get_uint(mesg, &fsloc->locations_count);
	err = get_uint(mesg, &fsloc->locations_count);
	if (err)
	if (err)
@@ -442,6 +446,10 @@ static int secinfo_parse(char **mesg, char *buf, struct svc_export *exp)
	u32 listsize;
	u32 listsize;
	int err;
	int err;


	/* more than one secinfo */
	if (exp->ex_nflavors)
		return -EINVAL;

	err = get_uint(mesg, &listsize);
	err = get_uint(mesg, &listsize);
	if (err)
	if (err)
		return err;
		return err;
@@ -481,6 +489,10 @@ uuid_parse(char **mesg, char *buf, unsigned char **puuid)
{
{
	int len;
	int len;


	/* more than one uuid */
	if (*puuid)
		return -EINVAL;

	/* expect a 16 byte uuid encoded as \xXXXX... */
	/* expect a 16 byte uuid encoded as \xXXXX... */
	len = qword_get(mesg, buf, PAGE_SIZE);
	len = qword_get(mesg, buf, PAGE_SIZE);
	if (len != EX_UUID_LEN)
	if (len != EX_UUID_LEN)