Added code to move pointer till end of parsed string as being done by
simple_strtoul. Not checking return value of kstrtoul
Signed-off-by: Asheesh Ranjan <[email protected]>
---
drivers/staging/speakup/varhandlers.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/speakup/varhandlers.c
b/drivers/staging/speakup/varhandlers.c
index 1b0d1c0..0e516cf 100644
--- a/drivers/staging/speakup/varhandlers.c
+++ b/drivers/staging/speakup/varhandlers.c
@@ -322,9 +322,22 @@ char *spk_strlwr(char *s)
char *spk_s2uchar(char *start, char *dest)
{
- int val = 0;
+ long val = 0, val_copy;
+ int err;
+
+ err = kstrtoul(skip_spaces(start), 10, &val);
+
+ while (isspace(*start))
+ start++; /*Skip leading whitespace*/
+ val_copy = val*10;
+ while (val_copy != 0) { /* Keep track of number of digits left */
+ if (isdigit(*start)) {
+ val_copy /= 10;
+ start++; /* Move forward by a digit */
+ } else
+ break;
+ }
- val = simple_strtoul(skip_spaces(start), &start, 10);
if (*start == ',')
start++;
*dest = (u_char)val;
--
1.7.10.4
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel