valueflow: bail out earlier when encountering divisions by zero. Fixes #7819.

This caused valueflow to actually try to divide by zero, detected by UBSAN.
This commit is contained in:
Matthias Krüger 2016-11-20 14:38:35 +01:00
parent d3919b23fa
commit b6614d0aa4
1 changed files with 1 additions and 3 deletions

View File

@ -421,13 +421,11 @@ static void setTokenValue(Token* tok, const ValueFlow::Value &value, const Setti
setTokenValue(parent, result, settings); setTokenValue(parent, result, settings);
break; break;
case '/': case '/':
if (value1->isTokValue() || value2->isTokValue()) if (value1->isTokValue() || value2->isTokValue() || value2->intvalue == 0)
break; break;
if (value1->isFloatValue() || value2->isFloatValue()) { if (value1->isFloatValue() || value2->isFloatValue()) {
result.valueType = ValueFlow::Value::FLOAT; result.valueType = ValueFlow::Value::FLOAT;
result.floatValue = floatValue1 / floatValue2; result.floatValue = floatValue1 / floatValue2;
} else if (value2->intvalue == 0) {
break;
} else { } else {
result.intvalue = value1->intvalue / value2->intvalue; result.intvalue = value1->intvalue / value2->intvalue;
} }