Messages in this thread Patch in this message | | | Date | Tue, 30 Jun 2015 15:42:53 +0800 | From | Pan Xinhui <> | Subject | [PATCH] lib/bitmap.c: return -EINVAL for grouping errors in __bitmap_parselist |
| |
Sometimes the input from user may cause an unexpected result.
just like __bitmap_parse, we return -EINVAL if there is no avaiable digit in each parsing procedures.
Signed-off-by: Pan Xinhui <xinhuix.pan@intel.com> --- lib/bitmap.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/bitmap.c b/lib/bitmap.c index 64c0926..995fca2 100644 --- a/lib/bitmap.c +++ b/lib/bitmap.c @@ -504,7 +504,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen, int nmaskbits) { unsigned a, b; - int c, old_c, totaldigits; + int c, old_c, totaldigits, ndigits; const char __user __force *ubuf = (const char __user __force *)buf; int exp_digit, in_range; @@ -514,6 +514,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen, exp_digit = 1; in_range = 0; a = b = 0; + ndigits = 0; /* Get the next cpu# or a range of cpu#'s */ while (buflen) { @@ -555,8 +556,10 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen, if (!in_range) a = b; exp_digit = 0; - totaldigits++; + ndigits++; totaldigits++; } + if (ndigits == 0) + return -EINVAL; if (!(a <= b)) return -EINVAL; if (b >= nmaskbits) -- 1.9.1
| |