tools/nolibc: fix integer overflow in i{64,}toa_r() and
In twos complement the most negative number can not be negated. Fixes:b1c21e7d99("tools/nolibc/stdlib: add i64toa() and u64toa()") Fixes:66c397c4d2("tools/nolibc/stdlib: replace the ltoa() function with more efficient ones") Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Acked-by: Willy Tarreau <w@1wt.eu> Link: https://lore.kernel.org/r/20250419-nolibc-ubsan-v2-5-060b8a016917@weissschuh.net
This commit is contained in:
@@ -275,7 +275,7 @@ int itoa_r(long in, char *buffer)
|
||||
int len = 0;
|
||||
|
||||
if (in < 0) {
|
||||
in = -in;
|
||||
in = -(unsigned long)in;
|
||||
*(ptr++) = '-';
|
||||
len++;
|
||||
}
|
||||
@@ -411,7 +411,7 @@ int i64toa_r(int64_t in, char *buffer)
|
||||
int len = 0;
|
||||
|
||||
if (in < 0) {
|
||||
in = -in;
|
||||
in = -(uint64_t)in;
|
||||
*(ptr++) = '-';
|
||||
len++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user