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