説明
NULLである、またはNULLの可能性があるポインターを逆参照すると、プログラムが停止するおそれがあります。
想定される影響
- サービス拒否、エラー処理を通じた情報漏えい、安定性の低下につながる可能性があります。
対処方法
ポインターを使う前にNULLかどうかを確認し、NULLの場合は処理から戻るか、エラーを処理してください。
例
変更前
c
char *p = NULL;
p[0] = 'x';
変更後
c
char *p = get_buffer();
if (p == NULL) { return; }
p[0] = 'x';
解説:
- 変更前: NULLポインターを配列のように逆参照しています。
- 変更後:
NULLなら処理から戻り、それ以外の場合にアクセスします。実装を省略したget_buffer()は、使用時に1バイト以上を書き込める有効なバッファーを返す必要があります。NULLの確認だけでは、寿命や容量は保証されません。