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