diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-17 08:48:13 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-07-17 08:48:13 +0000 |
commit | 416914fc6115d2013433a5956febcffb5c8a0466 (patch) | |
tree | 09ba8bd4acad70e895bafc84623151cff4da3972 /libbb | |
parent | 627052e75d6657a029a328cffd0832cb581b82fd (diff) | |
download | busybox-416914fc6115d2013433a5956febcffb5c8a0466.tar.gz |
bb_strtoXXX: close bug 4174 (potential use of buf[-1])
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/bb_strtonum.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/libbb/bb_strtonum.c b/libbb/bb_strtonum.c index 50ed99b4b..2433f1f1f 100644 --- a/libbb/bb_strtonum.c +++ b/libbb/bb_strtonum.c @@ -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; } |