X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibc.so_src%2Fstrtoi.c;h=84bf0005919edbacef6a2dc0967f07fffe40d88c;hb=eff15be7c050cd7c614b52b997161558bfbc7ab9;hp=4fd2da5b2022d6737c6b7a19679153f6da223d06;hpb=e9ff6475019f9df9c1603483f1c090c24a61913b;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc.so_src/strtoi.c b/Usermode/Libraries/libc.so_src/strtoi.c index 4fd2da5b..84bf0005 100644 --- a/Usermode/Libraries/libc.so_src/strtoi.c +++ b/Usermode/Libraries/libc.so_src/strtoi.c @@ -12,7 +12,7 @@ unsigned long long strtoull(const char *str, char **end, int base) { - long long ret = 0; + unsigned long long ret = 0; if( !str || base < 0 || base > 36 || base == 1 ) { if(end) @@ -138,7 +138,8 @@ long long strtoll(const char *str, char **end, int base) //_SysDebug("strtoll - neg=%i,ret=%llu", neg, ret); if( neg ) { - if( -ret < LLONG_MIN ) { + // Abuses unsigned integer overflow + if( ret + LLONG_MIN < ret ) { errno = ERANGE; return LLONG_MIN; }