ATH-div-0-pos
In this section:
Synopsis
Interval analysis has found an expression that might be 0 and is used as a divisor.
Enabled by default
Yes
Severity/Certainty
High/Low

Full description
Interval analysis has found an expression that contains 0 and is used as a divisor. This might cause a 'divide by zero' runtime error. This check is identical to MISRAC2004-1.2_h, MISRAC2012-Rule-1.3_f, CERT-INT33-C_e.
Coding standards
- CERT INT33-C
Ensure that division and modulo operations do not result in divide-by-zero errors
- CWE 369
Divide By Zero
- MISRA C:2004 1.2
(Required) No reliance shall be placed on undefined or unspecified behavior.
- MISRA C:2012 Rule-1.3
(Required) There shall be no occurrence of undefined or critical unspecified behaviour
Code examples
The following code example fails the check and will give a warning:
int foo(void)
{
int a = 3;
a--;
return 5 / (a-2); // a-2 is 0
}
The following code example passes the check and will not give a warning about this issue:
int foo(void)
{
int a = 3;
a--;
return 5 / (a+2); // OK - a+2 is 4
}