...
Code Block | ||||
---|---|---|---|---|
| ||||
signed long sl1, sl2, result; /* Initialize sl1 and sl2 */ if ( (sl2 == 0) || ( (sl1 == LONG_MIN) && (sl2 == -1) ) ) { /* handleHandle error condition */ } else { result = sl1 / sl2; } |
...
Code Block | ||||
---|---|---|---|---|
| ||||
signed long sl1, sl2, result; /* Initialize sl1 and sl2 */ if ( (sl2 == 0 ) || ( (sl1 == LONG_MIN) && (sl2 == -1) ) ) { /* handleHandle 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. | ||||||||
Coverity | 6.5 | DIVIDE_BY_ZERO | Fully Implemented. | ||||||
Fortify SCA | 5.0 | Can detect violations of this rule with CERT C Rule Pack. | |||||||
| 43 D | Partially implemented. | |||||||
PRQA QA-C |
| 2830 (C) | Fully implemented. |
...
Bibliography
[Seacord 20052013] | Chapter 5, "IntegersInteger Security" |
[Warren 2002] | Chapter 2, "Basics" |
...