bb_strtoXXX: close bug 4174 (potential use of buf[-1])
authorDenis Vlasenko <vda.linux@googlemail.com>
Thu, 17 Jul 2008 08:48:13 +0000 (08:48 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Thu, 17 Jul 2008 08:48:13 +0000 (08:48 -0000)
libbb/bb_strtonum.c

index 50ed99b4bd65dd719cec14d46365350646bd3010..2433f1f1f2439dd525463b41a9e5428ee1450a9c 100644 (file)
@@ -30,12 +30,6 @@ static unsigned long long handle_errors(unsigned long long v, char **endp, char
 {
        if (endp) *endp = endptr;
 
-       /* Check for the weird "feature":
-        * a "-" string is apparently a valid "number" for strto[u]l[l]!
-        * It returns zero and errno is 0! :( */
-       if (endptr[-1] == '-')
-               return ret_ERANGE();
-
        /* errno is already set to ERANGE by strtoXXX if value overflowed */
        if (endptr[0]) {
                /* "1234abcg" or out-of-range? */
@@ -44,6 +38,11 @@ static unsigned long long handle_errors(unsigned long long v, char **endp, char
                /* good number, just suspicious terminator */
                errno = EINVAL;
        }
+       /* Check for the weird "feature":
+        * a "-" string is apparently a valid "number" for strto[u]l[l]!
+        * It returns zero and errno is 0! :( */
+       if (endptr[-1] == '-')
+               return ret_ERANGE();
        return v;
 }