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

Commit d9282cb6 authored by Pan Xinhui's avatar Pan Xinhui Committed by Linus Torvalds
Browse files

lib/bitmap.c: fix a special string handling bug in __bitmap_parselist



If string end with '-', for exapmle, bitmap_parselist("1,0-",&mask,
nmaskbits), It is not in a valid pattern, so add a check after loop.
Return -EINVAL on such condition.

Signed-off-by: default avatarPan Xinhui <xinhuix.pan@intel.com>
Cc: Yury Norov <yury.norov@gmail.com>
Cc: Chris Metcalf <cmetcalf@ezchip.com>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent d21c3d4d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -546,6 +546,7 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen,
					return -EINVAL;
				b = 0;
				in_range = 1;
				at_start = 1;
				continue;
			}

@@ -558,6 +559,9 @@ static int __bitmap_parselist(const char *buf, unsigned int buflen,
			at_start = 0;
			totaldigits++;
		}
		/* if no digit is after '-', it's wrong*/
		if (at_start && in_range)
			return -EINVAL;
		if (!(a <= b))
			return -EINVAL;
		if (b >= nmaskbits)