...
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 |
| CertC-EXP46 | ||||||||||||||||
| CodeSonar |
| LANG.TYPE.IOT | Inappropriate operand type | |||||||||||||||
| CONSTANT_EXPRESSION_RESULT | Partially implemented | ||||||||||||||||
| Cppcheck |
| cert.py |
| bitwiseOnBoolean | ||||||||||||||
| Cppcheck Premium |
| bitwiseOnBoolean | ||||||||||||||||
| Helix QAC |
| 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- | ab | The operands of logical operators (&&, || and !) should be effectively BooleanExpressions that are effectively Boolean should not be used as operands to operators other than (&&, ||, !, =, ==, !=, ?:) | ||||||||||||||
| PC-lint Plus |
| 514 | Fully supported | |||||||||||||||
| Polyspace Bug Finder |
| 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 CA-C++ | ||||||||||||||
| Include Page | cplusplus:PRQA QA-C++_V | cplusplus:PRQA QA-C++_V | ||||||||||||||||
| 3709 | PVS-Studio |
| V564, V1015 | |||||||||||||||
| RuleChecker |
| inappropriate-bool | Supported indirectly via MISRA C:2012 Rule 10.1 | |||||||||||||||
| Security Reviewer - Static Reviewer |
| C73 | Fully implemented |
Related Guidelines
Key here (explains table format and definitions)
...