对负值执行按位运算
对负值执行按位运算的未定义行为
描述
当按位运算符(>>、^、|、~、but、not、&)用于具有负值的有符号整数变量时,会出现此缺陷。
风险
如果有符号整数的值为负数,则按位运算可能会出现意外结果,因为:
对负值执行按位运算可以产生特定于编译器的结果。
意外的计算可能会导致其他漏洞,例如缓冲区溢出。
修复
执行按位运算时,请使用 unsigned 整数以避免出现意外结果。
扩展检查项
当输入值未知并且只有一部分输入会导致问题时,默认的 Bug Finder 分析可能不会引发此缺陷。要检查由特定系统输入值引起的缺陷,请运行更严格的 Bug Finder 分析。请参阅Extend Bug Finder Checkers to Find Defects from Specific System Input Values。
示例
结果信息
| 组:数值 |
| 语言:C | C++ |
| 默认值:关闭 |
命令行语法:BITWISE_NEG |
| 影响:中等 |
版本历史记录
在 R2016b 中推出