Tool | Version | Checker | Description |
---|
Astrée | |
| Supported, but no explicit checker |
CodeSonar | | LANG.TYPE.AWID LANG.TYPE.OWID LANG.CAST.VALUE LANG.CAST.COERCE ALLOC.SIZE.ADDOFLOW ALLOC.SIZE.IOFLOW ALLOC.SIZE.MULOFLOW ALLOC.SIZE.SUBUFLOW ALLOC.SIZE.TRUNC MISC.MEM.SIZE.ADDOFLOW MISC.MEM.SIZE.BAD MISC.MEM.SIZE.MULOFLOW MISC.MEM.SIZE.SUBUFLOW MISC.MEM.SIZE.TRUNC | Expression value widened by assignment Expression value widened by other operand Cast alters value Coercion alters value Addition overflow of allocation size Integer overflow of allocation size Multiplication overflow of allocation size Subtraction underflow of allocation size Truncation of allocation size Addition overflow of size Unreasonable size argument Multiplication overflow of size Subtraction underflow of size Truncation of size |
Compass/ROSE |
|
| Can detect violations of this rule. It should look for patterns of (a op1 b) op2 c where c has a bigger type than a or b - Neither
a nor b is typecast to c 's type op2 is assignment or comparison
|
Coverity | 6.5 | OVERFLOW_BEFORE_WIDEN | Fully implemented |
Helix QAC | | C1890, C1891, C1892, C1893, C1894, C1895, C4490, C4491, C4492 |
|
Klocwork | | PORTING.CAST.SIZE |
|
LDRA tool suite | | 452 S | Partially implemented |
Parasoft C/C++test | | CERT_C-INT18-a CERT_C-INT18-b CERT_C-INT18-c | Avoid possible integer overflow in expressions in which the result is assigned to a variable of a wider integer type Avoid possible integer overflow in expressions in which the result is compared to an expression of a wider integer type Avoid possible integer overflow in expressions in which the result is cast to a wider integer type |
Polyspace Bug Finder | Include Page |
---|
| Polyspace Bug Finder_V |
---|
| Polyspace Bug Finder_V |
---|
|
| CERT C: Rec. INT18-C | Checks for integer overflow and unsigned integer overflow (rec. fully covered) |
PRQA QA-C | | 1890, 1891, 1892, 1893,1894, 1895, 4490, 4491, 4492 | Partially implemented |