CXX.ID_VIS.GLOBAL_VARIABLE.STATIC
CXX.ID_VIS.GLOBAL_VARIABLE.STATIC チェッカーは、静的グローバル変数が 1 つの関数のみで使用されるか、読み取られるか、作成込まれる場合に、欠陥を報告します。
脆弱性とリスク
変数を必要以上に広い可視性で定義すると、変数が誤って使用される機会が増えます。
軽減と防止
必要なすべての参照が可能である範囲で、変数のスコープまたは可視性をできる限り制限します。たとえば、変数が 1 つの関数のみに使用されている場合、その変数をローカル変数として宣言できます。
脆弱コード例
コピー
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