mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13:31 +01:00
Have tor_parse_*long functions check for negative bases
One of our unit tests checks that they behave correctly (giving an error) when the base is negative. But there isn't a guarantee that strtol and friends actually handle negative bases correctly. Found by Coverity Scan; fix for CID 504.
This commit is contained in:
parent
88caa552cc
commit
56e0959d2a
@ -906,6 +906,11 @@ tor_parse_long(const char *s, int base, long min, long max,
|
||||
char *endptr;
|
||||
long r;
|
||||
|
||||
if (base < 0) {
|
||||
if (ok)
|
||||
*ok = 0;
|
||||
return 0;
|
||||
}
|
||||
r = strtol(s, &endptr, base);
|
||||
CHECK_STRTOX_RESULT();
|
||||
}
|
||||
@ -918,6 +923,11 @@ tor_parse_ulong(const char *s, int base, unsigned long min,
|
||||
char *endptr;
|
||||
unsigned long r;
|
||||
|
||||
if (base < 0) {
|
||||
if (ok)
|
||||
*ok = 0;
|
||||
return 0;
|
||||
}
|
||||
r = strtoul(s, &endptr, base);
|
||||
CHECK_STRTOX_RESULT();
|
||||
}
|
||||
@ -942,6 +952,12 @@ tor_parse_uint64(const char *s, int base, uint64_t min,
|
||||
char *endptr;
|
||||
uint64_t r;
|
||||
|
||||
if (base < 0) {
|
||||
if (ok)
|
||||
*ok = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef HAVE_STRTOULL
|
||||
r = (uint64_t)strtoull(s, &endptr, base);
|
||||
#elif defined(_WIN32)
|
||||
|
Loading…
Reference in New Issue
Block a user