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:
parent
d3919b23fa
commit
b6614d0aa4
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue