NULLポインターの逆参照

NULLポインターの逆参照

説明

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の確認だけでは、寿命や容量は保証されません。

参考資料