バッファー サイズがハードコードされています
メモリ バッファーのサイズがシンボリック定数ではなく数値になっている
説明
この欠陥は、配列などのメモリ バッファーを宣言する際に、シンボリック定数ではなく数値を使用した場合に発生します。
リスク
バッファー サイズがハード コードされていると、次の問題の原因となります。
バッファー サイズがハード コードされていると、誤りが生じる可能性が大きくなり、そのため保守コストも高くなる。ポリシーの変更によりバッファー サイズの変更が必要になった場合、開発者はコードにバッファー サイズが出現するたびに変更しなければならない。
ハード コードされている定数は、コードが開示された場合に攻撃にさらされることがある。
修正方法
バッファー サイズには、ハード コードされている定数ではなくシンボリック名を使用します。シンボリック名には、const 修飾子付き変数、enum 定数またはマクロを含めます。
enum 定数の使用を推奨します。
マクロは前処理後に、その定数値によって置き換えられます。したがって、ループ境界が外部にさらされる場合があります。
enum定数はコンパイルの時点で既知となっています。したがって、コンパイラではループをより効率的に最適化できます。const修飾子付き変数は、多くの場合、実行時に既知となります。
例
結果情報
| グループ: 適切な手法 |
| 言語: C | C++ |
| 既定値: オフ |
コマンド ライン構文: HARD_CODED_BUFFER_SIZE |
| 影響度: Low |
バージョン履歴
R2015b で導入