Versions Compared

Key

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

...

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

INT34-C

Low

Unlikely

Medium

P2

L3

Automated Detection

Tool

Version

Checker

Description

Astrée
Include Page
Astrée_V
Astrée_V
Supported, but no explicit checker

precision-shift-width
precision-shift-width-constant

Fully checked
Axivion Bauhaus Suite

Include Page
Axivion Bauhaus Suite_V
Axivion Bauhaus Suite_V

CertC-INT34Can detect shifts by a negative or an excessive number of bits and right shifts on negative values.
CodeSonar
Include Page
CodeSonar_V
CodeSonar_V

LANG.ARITH.BIGSHIFT
LANG.ARITH.NEGSHIFT

Shift amount exceeds bit width
Negative shift amount

Compass/ROSE



Can detect violations of this rule. Unsigned operands are detected when checking for INT13-C. Use bitwise operators only on unsigned operands

Coverity
Include Page
Coverity_V
Coverity_V

BAD_SHIFT

Implemented
Cppcheck
Include Page
Cppcheck_V
Cppcheck_V
shiftNegative, shiftTooManyBits

Context sensitive analysis
Warns whenever Cppcheck sees a negative shift for a POD expression
(The warning for shifting too many bits is written only if Cppcheck has sufficient type information and you use --platform to specify the sizes of the standard types.)

Cppcheck Premium

Include Page
Cppcheck Premium_V
Cppcheck Premium_V

shiftNegative, shiftTooManyBits

premium-cert-int34-c

Context sensitive analysis
Warns whenever Cppcheck sees a negative shift for a POD expression
(The warning for shifting too many bits is written only if Cppcheck has sufficient type information and you use --platform to specify the sizes of the standard types.)
ECLAIR
Include Page
ECLAIR_V
ECLAIR_V
CC2.INT34Partially implemented
Helix QAC

Include Page
Helix QAC_V
Helix QAC_V

C0499, C2790, 

C++2790,  C++3003

DF2791, DF2792, DF2793


Klocwork

Include Page
Klocwork_V
Klocwork_V

MISRA.SHIFT.RANGE.2012


LDRA tool suite
Include Page
LDRA_V
LDRA_V

51 S, 403 S, 479 S

Partially implemented

Parasoft C/C++test
Include Page
Parasoft_V
Parasoft_V
MISRA-038
CERT_C-INT34-a

Avoid incorrect shift operations

Polyspace Bug Finder

Include Page
Polyspace Bug Finder_V
Polyspace Bug Finder

R2016a

_V

CERT C: Rule INT34-C


Checks for:

  • Shift of a negative value
,
  • Shift operation overflow

Shift operator on negative value

Overflow from shifting operation

PRQA QA-C

Rule partially covered.

PVS-Studio

Include Page

PRQA QA

PVS-

C

Studio_

v

V

PRQA QA

PVS-

C

Studio_

v

V

V610
0499

RuleChecker
2790
2791 (D)
2792 (A)
2793 (S)Partially implemented

Include Page
RuleChecker_V
RuleChecker_V

precision-shift-width-constant

Partially checked
TrustInSoft Analyzer

Include Page
TrustInSoft Analyzer_V
TrustInSoft Analyzer_V

shift

Exhaustively verified (see one compliant and one non-compliant example).

PVS-Studio6.22V610

Related Vulnerabilities

Search for vulnerabilities resulting from the violation of this rule on the CERT website.

...