From c70b71e353be680b7d042198bed5dc7fbc09664c Mon Sep 17 00:00:00 2001 From: Alexander Mai Date: Fri, 27 Nov 2015 21:45:08 +0100 Subject: [PATCH] #5888 fsanitize=undefined: signed integer overflow: 4611686018427387904 * 2 cannot be represented in type 'long long int' in valueflow.cpp --- lib/valueflow.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/valueflow.cpp b/lib/valueflow.cpp index 7f71dfed3..5d8b5d919 100644 --- a/lib/valueflow.cpp +++ b/lib/valueflow.cpp @@ -1782,9 +1782,12 @@ static void execute(const Token *expr, *result = result1 + result2; else if (expr->str() == "-") *result = result1 - result2; - else if (expr->str() == "*") - *result = result1 * result2; - else if (result2 == 0) + else if (expr->str() == "*") { + if (result2 && (result1 > std::numeric_limits::max()/result2)) + *error = true; + else + *result = result1 * result2; + } else if (result2 == 0) *error = true; else if (expr->str() == "/") *result = result1 / result2;