CXX.ID_VIS.GLOBAL_VARIABLE.STATIC

当静态全局变量仅被一个函数使用、读取或写入时,CXX.ID_VIS.GLOBAL_VARIABLE.STATIC 检查器会报告缺陷。

漏洞与风险

定义可见性超出所需范围的变量会增加变量被意外使用的几率。

缓解与预防

尽可能将变量的范围或可见性限制到所需的所有引用的程度。例如,如果某个变量仅由一个函数使用,那么我们可以将该变量声明为局部变量。

漏洞代码示例

复制
  static unsigned int a = 0;     // CXX.ID_VIS.GLOBAL_VARIABLE.STATIC //
  void f0()
  {
      if (a++ > 100) return;
      /* … */
  }
  void f1()
  {
      /* … */
 }

在此示例中,变量“a”被声明为静态全局变量,但仅在函数 f0() 中使用。

修正代码示例

复制
  void f0()
  {
      static unsigned int a = 0; 
      if (a++ > 100) return;
      /* … */
  }
  void f1()
  {
      /* … */
 }

相关检查器