Commit e2f0e730 authored by J. Bruce Fields's avatar J. Bruce Fields Committed by Ben Hutchings

nfsd: add get_uint for u32's

commit a007c4c3 upstream.

I don't think there's a practical difference for the range of values
these interfaces should see, but it would be safer to be unambiguous.
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
parent 9a8dc834
...@@ -401,7 +401,7 @@ fsloc_parse(char **mesg, char *buf, struct nfsd4_fs_locations *fsloc) ...@@ -401,7 +401,7 @@ fsloc_parse(char **mesg, char *buf, struct nfsd4_fs_locations *fsloc)
int migrated, i, err; int migrated, i, err;
/* listsize */ /* listsize */
err = get_int(mesg, &fsloc->locations_count); err = get_uint(mesg, &fsloc->locations_count);
if (err) if (err)
return err; return err;
if (fsloc->locations_count > MAX_FS_LOCATIONS) if (fsloc->locations_count > MAX_FS_LOCATIONS)
...@@ -459,7 +459,7 @@ static int secinfo_parse(char **mesg, char *buf, struct svc_export *exp) ...@@ -459,7 +459,7 @@ static int secinfo_parse(char **mesg, char *buf, struct svc_export *exp)
return -EINVAL; return -EINVAL;
for (f = exp->ex_flavors; f < exp->ex_flavors + listsize; f++) { for (f = exp->ex_flavors; f < exp->ex_flavors + listsize; f++) {
err = get_int(mesg, &f->pseudoflavor); err = get_uint(mesg, &f->pseudoflavor);
if (err) if (err)
return err; return err;
/* /*
...@@ -468,7 +468,7 @@ static int secinfo_parse(char **mesg, char *buf, struct svc_export *exp) ...@@ -468,7 +468,7 @@ static int secinfo_parse(char **mesg, char *buf, struct svc_export *exp)
* problem at export time instead of when a client fails * problem at export time instead of when a client fails
* to authenticate. * to authenticate.
*/ */
err = get_int(mesg, &f->flags); err = get_uint(mesg, &f->flags);
if (err) if (err)
return err; return err;
/* Only some flags are allowed to differ between flavors: */ /* Only some flags are allowed to differ between flavors: */
......
...@@ -224,6 +224,22 @@ static inline int get_int(char **bpp, int *anint) ...@@ -224,6 +224,22 @@ static inline int get_int(char **bpp, int *anint)
return 0; return 0;
} }
static inline int get_uint(char **bpp, unsigned int *anint)
{
char buf[50];
int len = qword_get(bpp, buf, sizeof(buf));
if (len < 0)
return -EINVAL;
if (len == 0)
return -ENOENT;
if (kstrtouint(buf, 0, anint))
return -EINVAL;
return 0;
}
/* /*
* timestamps kept in the cache are expressed in seconds * timestamps kept in the cache are expressed in seconds
* since boot. This is the best for measuring differences in * since boot. This is the best for measuring differences in
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment