Versions Compared

Key

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

...

In modwrap semantics (also called modulo arithmetic), integer values "wrap round." That is, adding 1 to MAX produces MIN. This is the defined behavior for unsigned integers in the C Standard [ISO/IEC 9899:2011], subclause 6.2.5, paragraph 9. It is frequently the behavior of signed integers, as well. However, it is more sensible in many applications to use saturation semantics instead of modwrap semantics. For example, in the computation of a size (using unsigned integers), it is often better for the size to stay at the maximum value in the event of overflow rather than to suddenly become a very small value.

...

Recommendation

Severity

Likelihood

Remediation Cost

Priority

Level

INT08-C

mediumMedium

probableProbable

highHigh

P4

L3

Automated Detection

Tool

Version

Checker

Description

Compass/ROSE

 

 

Could detect violations of this recommendation by flagging any comparison expression involving addition that could potentially overflow. For example, instead of comparing a + b < c (where b and c are compile-time constants) and b > c, the code should compare a < c - b. (This assumes a, b, c are unsigned ints. Usually b is small and c is an upper bound such as INT_MAX.)

LDRA tool suite

Include Page
LDRA_V
LDRA_V

488 S

Partially implemented

PRQA QA-C
Include Page
PRQA_V
PRQA_V

0272 (I)
0273 (I)

Partially implemented

...