PRECISION.LOSS 检查器查找那些指向较小的数据类型进行的、可能导致数据精度损失的隐含转换的实例。
根据具体环境,这种情况可能被利用,例如在导致缓冲区溢出时。
如果精度损失转换是刻意为之,则应使用相应的位掩码来对转换源进行掩码处理。例如:
1 char c = (i & 0xFF);
char c = (i & 0xFF);
1 2 3 4 void foo(int i) { char c; c = i; }
void foo(int i) { char c; c = i; }
Klocwork 标记了第 3 行,其中有一个指向较小数据类型 char 'c' 的隐式转换。
应用程序安全培训材料由 Secure Code Warrior 提供。