Division and modulo operations are susceptible to divide-by-zero errors.
Unable to render {include} The included page could not be found.
Unable to render {include} The included page could not be found.
Unable to render {include} The included page could not be found.
Unable to render {include} The included page could not be found.
Unable to render {include} The included page could not be found.
Unable to render {include} The included page could not be found.
Non-Compliant Code Example
This code can result in a divide-by-zero error during the division of the signed operands sl1
and sl2
.
signed long sl1, sl2, result; result = sl1 / sl2;
Compliant Solution
This compliant solution tests the suspect division operation to guarantee there is no possibility of divide-by-zero errors or signed overflow.
signed long sl1, sl2, result; if ( (sl2 == 0) || ( (sl1 == LONG_MIN) && (sl2 == -1) ) ) { /* handle error condition */ } result = sl1 / sl2;
Non-Compliant Code Example
This code can result in a divide-by-zero error during the modulo operation on the signed operands sl1
and sl2
.
signed long sl1, sl2, result; result = sl1 % sl2;
Compliant Solution
This compliant solution tests the suspect modulo operation to guarantee there is no possibility of a divide-by-zero error.
signed long sl1, sl2, result; if (sl2 == 0) { /* handle error condition */ } result = sl1 % sl2;
Priority: P4 Level: L3
Divide-by-zero errors can lead to abnormal program termination and denial-of-service attacks.
Component |
Value |
---|---|
Severity |
1 (low) |
Likelihood |
2 (probable) |
Remediation cost |
2 (medium) |
References
- ISO/IEC 9899-1999 6.5.5 Multiplicative operators
- Seacord 05 Chapter 5 Integers
- Warren 02 Chapter 2 Basics