All char and short integer types are promoted to int or unsigned int before they are used in expressions. Consequently, they receive high-order bits. These bits are either zero-extended for unsigned chars and shorts, or are sign-extended for signed chars and shorts. Consequently, arithmetic Arithmetic operations performed on ints yield the same values as on chars and shorts (at least in the low-order bits). However, bitwise operations may yield surprising effects.
...
In this compliant solution, we truncate the negation back down to 8 bits. Consequently, result_8
receives the expected value of 0x0aU
.
...
Recommendation | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
EXP14-C | low | likely | high | P9 | L1 |
Automated Detection
Tool | Version | Checker | Description |
---|---|---|---|
|
...
|
|
|
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Other Languages
Related Guidelines
This rule appears in the C++ Secure Coding Standard as : EXP15-CPP. Beware of integer promotion when performing bitwise operations on chars or shorts.
Bibliography
Wiki Markup |
---|
\[[MISRA 042004|AA. Bibliography#MISRA 04]\] Rule 10.5 |
...