STRONG.TYPE.EXTRACT

将强类型的变量赋予不同类型的变量

STRONG.TYPE 系列检查器会检测违反或忽略程序员强制实施的强类型指定(类型定义的抽象类型),从而导致基础 ANSI 类型语义占据主导地位的情况。

STRONG.TYPE.EXTRACT 检查器查找通过以下任意一种方法将强类型的值赋予不同的非强类型的变量的实例:

  • 通过赋值运算符
  • 在返回值中
  • 通过自变量传递
  • 在初始化时

漏洞与风险

遵循 ANSI 标准的编译器不会针对此类问题生成警告,因为此编译器仅检查基础类型,不会检查表面类型(即程序员定义的类型)。所以可能会出现逻辑错误。

漏洞代码示例

复制
 typedef int Count;

 int main() {
  Count a;
  int b = a; 
  return 0;
 }

Klocwork 标记了第 5 行,指出将强类型的变量赋予不同的非强类型的变量。