...
The result of the /
operator is the quotient from the division of the first arithmetic operand by the second arithmetic operand. Division operations are susceptible to divide-by-zero errors. Overflow can also occur during two's - complement signed integer division when the dividend is equal to the minimum (negative) value for the signed integer type and the divisor is equal to -1 —1 (see INT32-C. Ensure that operations on signed integers do not result in overflow).
...
Code Block | ||
---|---|---|
| ||
signed long sl1, sl2, result;
/* Initialize sl1 and sl2 */
result = sl1 / sl2;
|
Compliant Solution
...
Code Block | ||
---|---|---|
| ||
signed long sl1, sl2, result; /* Initialize sl1 and sl2 */ if ( (sl2 == 0) || ( (sl1 == LONG_MIN) && (sl2 == -1) ) ) { /* handle error condition */ } else { result = sl1 / sl2; } |
Modulo
The modulo operator provides the remainder when two operands of integer type are divided.
...
Code Block | ||
---|---|---|
| ||
signed long sl1, sl2, result;
/* Initialize sl1 and sl2 */
result = sl1 % sl2;
|
Compliant Solution
...
Code Block | ||
---|---|---|
| ||
signed long sl1, sl2, result; /* Initialize sl1 and sl2 */ if ( (sl2 == 0 ) || ( (sl1 == LONG_MIN) && (sl2 == -1) ) ) { /* handle error condition */ } else { result = sl1 % sl2; } |
Risk Assessment
A divide by zero can result in abnormal program termination and denial of service.
...