...
In this noncompliant code example, a bitwise & operator operator is used with the results of an two equality-expressionexpressions:
| Code Block |
|---|
|
if (!(getuid() == 0 & geteuidgetgid() == 0)) {
/* ... */
}
|
Compliant Solution
...
| Code Block |
|---|
|
if (!(getuid() == 0 && geteuidgetgid() == 0)) {
/* ... */
}
|
Risk Assessment
...
Tool | Version | Checker | Description |
|---|
| Astrée | | inappropriate-bool | Supported indirectly via MISRA C:2012 Rule 10.1 |
| Axivion Bauhaus Suite | | Include Page |
|---|
| Axivion Bauhaus Suite_V |
|---|
| Axivion Bauhaus Suite_V |
|---|
|
| CertC-EXP46 |
|
| CodeSonar | | LANG.TYPE.IOT | Inappropriate operand type |
Coverity | | CONSTANT_EXPRESSION_RESULT | Partially implemented |
| Cppcheck | | bitwiseOnBoolean |
|
| Cppcheck Premium | | Include Page |
|---|
| Cppcheck Premium_V |
|---|
| Cppcheck Premium_V |
|---|
|
| bitwiseOnBoolean |
|
| Helix QAC | | cert.py | C3344, C4502 C++3709 Detected by the addon cert.py |
|
| Klocwork | | MISRA.LOGIC.OPERATOR.NOT_BOOL |
|
| LDRA tool suite | | 136 S | Fully Implemented |
| Parasoft C/C++test | | CERT_C-EXP46-b | Expressions that are effectively Boolean should not be used as operands to operators other than (&&, ||, !, =, ==, !=, ?:) |
| PC-lint Plus | | Include Page |
|---|
| PC-lint Plus_V |
|---|
| PC-lint Plus_V |
|---|
|
| 514 | Fully supported |
| Polyspace Bug Finder | | Include Page |
|---|
| Polyspace Bug Finder_V |
|---|
| Polyspace Bug Finder_V |
|---|
|
| CERT C: Rule EXP46-C | Checks for bitwise operations on boolean operands (rule fully covered) | PRQA QA-C | | Include Page |
|---|
PRQA QA-C_v | PRQA QA-C_v | 3344,4502 | PRQA QA-C++ | | Include Page |
|---|
cplusplus:PRQA QA-C++_V | cplusplus:PRQA QA-C++_V |
| 3709 | PVS-Studio | | V564, V1015
|
|
| RuleChecker | | Include Page |
|---|
| RuleChecker_V |
|---|
| RuleChecker_V |
|---|
|
| inappropriate-bool | Supported indirectly via MISRA C:2012 Rule 10.1 | Helix QAC
| Security Reviewer - Static Reviewer | | Helix QAC | Security Reviewer - Static Reviewer_V |
|---|
|
| Helix QAC | Security Reviewer - Static Reviewer_V |
|---|
|
| C: 3344, 4502
C++: 3709C73 | Fully implemented |
Related Guidelines
Key here (explains table format and definitions)
...