diff options
author | Rob Landley <rob@landley.net> | 2012-02-09 06:09:27 -0600 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2012-02-09 06:09:27 -0600 |
commit | 5e6dca62869816709f4f6a16d9c191a9e93522a4 (patch) | |
tree | 7eb104ba25d0d2413819d935796fc78b18027701 | |
parent | 4cd7d19d653eaacff1da3b13eefac3938e888b3d (diff) | |
download | toybox-5e6dca62869816709f4f6a16d9c191a9e93522a4.tar.gz |
Make atolx() error_exit() if fed a string that doesn't convert entirely into an integer.
-rw-r--r-- | lib/lib.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -480,14 +480,18 @@ char *itoa(int n) // atol() with the kilo/mega/giga/tera/peta/exa extensions. // (zetta and yotta don't fit in 64 bits.) -long atolx(char *c) +long atolx(char *numstr) { - char *suffixes="kmgtpe", *end; - long val = strtol(c, &c, 0); + char *c, *suffixes="kmgtpe", *end; + long val = strtol(numstr, &c, 0); if (*c) { end = strchr(suffixes, tolower(*c)); if (end) val *= 1024L<<((end-suffixes)*10); + else { + while (isspace(*c)) c++; + if (*c) error_exit("not integer: %s", numstr); + } } return val; |