Fix return value in trailing_strtoln()
authorSimon Glass <sjg@chromium.org>
Thu, 6 Oct 2016 02:42:11 +0000 (20:42 -0600)
committerBin Meng <bmeng.cn@gmail.com>
Tue, 11 Oct 2016 03:55:33 +0000 (11:55 +0800)
This function should return -1 if there is no trailing integer in the
string. Instead it returns 0. Fix it by checking for this condition at the
start.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
lib/strto.c

index a6c0157..e93a4f5 100644 (file)
@@ -160,9 +160,11 @@ long trailing_strtoln(const char *str, const char *end)
 
        if (!end)
                end = str + strlen(str);
-       for (p = end - 1; p > str; p--) {
-               if (!isdigit(*p))
-                       return simple_strtoul(p + 1, NULL, 10);
+       if (isdigit(end[-1])) {
+               for (p = end - 1; p > str; p--) {
+                       if (!isdigit(*p))
+                               return simple_strtoul(p + 1, NULL, 10);
+               }
        }
 
        return -1;