Division and modulo operations are susceptible to divide-by-zero errors.
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; | 
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;
 | 
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; | 
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;
 | 
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) |