STRONG.TYPE.ASSIGN.ARG
非预期的强类型自变量的赋值
STRONG.TYPE 系列检查器会检测违反或忽略程序员强制实施的强类型指定(类型定义的抽象类型),从而导致基础 ANSI 类型语义占据主导地位的情况。
STRONG.TYPE.ASSIGN.ARG 检查器会寻找强类型不匹配时的自变量传递。
漏洞与风险
遵循 ANSI 标准的编译器不会针对此类问题生成警告,因为此编译器仅检查基础类型,不会检查表面类型(即程序员定义的类型)。所以可能会出现逻辑错误。
漏洞代码示例
复制
typedef int Weight;
typedef int Speed;
void foo(Speed s) {}
int main() {
Weight w;
foo(w);
return 0;
}
Klocwork 标记了第 8 行,指出预期传递强类型 Speed 的自变量,而传递的是强类型 Weight 的自变量。