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()
{
/* … */
}
相关检查器
- CXX.ID_VIS.GLOBAL_VARIABLE.EXTERN
- MISRA.VAR.MIN.VIS