PRECISION.LOSS

出现精度损失

PRECISION.LOSS 检查器查找那些指向较小的数据类型进行的、可能导致数据精度损失的隐含转换的实例。

漏洞与风险

根据具体环境,这种情况可能被利用,例如在导致缓冲区溢出时。

缓解与预防

如果精度损失转换是刻意为之,则应使用相应的位掩码来对转换源进行掩码处理。例如:

复制
char c = (i & 0xFF);

漏洞代码示例

复制
  void foo(int i) {
      char c;
      c = i; 
  }

Klocwork 标记了第 3 行,其中有一个指向较小数据类型 char 'c' 的隐式转换。

相关检查器

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。