Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This noncompliant code example can result in a divide-by-zero error during the division of the signed operands sl1 and sl2.:

Code Block
bgColor#FFcccc
langc
signed long sl1, sl2, result;

/* Initialize sl1 and sl2 */

result = sl1 / sl2;

...

This compliant solution tests the suspect division operation to guarantee there is no possibility of divide-by-zero errors or signed overflow.:

Code Block
bgColor#ccccff
langc
signed long sl1, sl2, result;

/* Initialize sl1 and sl2 */

if ( (sl2 == 0) || ( (sl1 == LONG_MIN) && (sl2 == -1) ) ) {
  /* Handle error condition */
}
else {
  result = sl1 / sl2;
}

...

This noncompliant code example can result in a divide-by-zero error during the modulo operation on the signed operands sl1 and sl2.:

Code Block
bgColor#FFcccc
langc
signed long sl1, sl2, result;

/* Initialize sl1 and sl2 */

result = sl1 % sl2;

...

This compliant solution tests the suspect modulo operation to guarantee there is no possibility of a divide-by-zero error or an overflow error.:

Code Block
bgColor#ccccff
langc
signed long sl1, sl2, result;

/* Initialize sl1 and sl2 */

if ( (sl2 == 0 ) || ( (sl1 == LONG_MIN) && (sl2 == -1) ) ) {
  /* Handle error condition */
}
else {
  result = sl1 % sl2;
}

...

Tool

Version

Checker

Description

Compass/ROSE

  

Can detect some violations of this rule. In particular, it ensures that all operations involving division or modulo are preceded by a check ensuring that the second operand is nonzero.

Coverity6.5DIVIDE_BY_ZEROFully Implemented.
Fortify SCA5.0 

Can detect violations of this rule with CERT C Rule Pack.

LDRA tool suite

Include Page
LDRA_V
LDRA_V

43 D
248 S

Partially implemented.
PRQA QA-C
Include Page
PRQA_V
PRQA_V

2830 (C)
2831 (D)
2832 (A)
2833 (S)
2834 (P)

Fully implemented.

Related Vulnerabilities

Search for vulnerabilities resulting from the violation of this rule on the CERT website.

...

[Seacord 2013]Chapter 5, "Integer Security"
[Warren 2002]Chapter 2, "Basics"

...

 

...