From 8a653584c4331496c8445580b27cbaaa3f6b2e19 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Sun, 11 Oct 2015 23:24:35 +0200 Subject: [PATCH] Fix strtol multiplication overflow check. --- libc/stdlib/strtol.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libc/stdlib/strtol.cpp b/libc/stdlib/strtol.cpp index b4547a37..eb17ae3d 100644 --- a/libc/stdlib/strtol.cpp +++ b/libc/stdlib/strtol.cpp @@ -116,9 +116,9 @@ static bool would_multiplication_overflow(T_INT a, T_INT b) T_UNSIGNED_INT b_abs = b < 0 ? - (T_UNSIGNED_INT) b : b; T_UNSIGNED_INT min_abs = - (T_UNSIGNED_INT) T_INT_MIN; T_UNSIGNED_INT max_abs = T_INT_MAX; - T_UNSIGNED_INT limit_pos = (0 <= a && 0 <= b) || (a < 0 && b < 0); + bool limit_pos = (0 <= a && 0 <= b) || (a < 0 && b < 0); T_UNSIGNED_INT limit = limit_pos ? max_abs : min_abs; - T_UNSIGNED_INT max_b = a_abs / limit; + T_UNSIGNED_INT max_b = limit / a_abs; return max_b < b_abs; } }