#5888 fsanitize=undefined: signed integer overflow: 4611686018427387904 * 2 cannot be represented in type 'long long int' in valueflow.cpp

This commit is contained in:
Alexander Mai 2015-11-27 21:45:08 +01:00
parent c6ec5ca734
commit c70b71e353
1 changed files with 6 additions and 3 deletions

View File

@ -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<MathLib::bigint>::max()/result2))
*error = true;
else
*result = result1 * result2;
} else if (result2 == 0)
*error = true;
else if (expr->str() == "/")
*result = result1 / result2;