バッファアンダーラン

バッファアンダーラン () またはバッファアンダーフロー () とは、コンピュータシステムにおける例外動作の1つで、あるバッファ領域に対して必要とされる分より書き込まれるデータが不足することである。類似の用語にスタックアンダーフローがあり、これはスタックの限度を超えたポップのことであるが、バッファアンダーフローの用語においてもバッファ領域外の下位アドレスへの不正アクセスの意を含むとする意見もある。

プログラムに適切な防止／検出の例外処理が施されていない場合には、バッファオーバーランと同様にコンピュータセキュリティ上の深刻なセキュリティホールとなりうる。またリアルタイム性を要求される処理で発生した場合はセッションが失敗することもある。

バッファオーバーラン同様種類によってスタックアンダーラン、ヒープアンダーランに大別され、スタック、ヒープのいずれもプログラムの実行に不可欠なデータ（例えばサブルーチンのリターンアドレスや、ヒープ内のコード）を内包することがあり、そのようなデータを意図的に排除させることにより、意図的なコードを実行させることが可能になる。

光ディスク書き込み時におけるバッファアンダーラン 
書き込み可能な光ディスク（CD-R、DVD-Rなど）への書き込み不良の原因の1つにバッファアンダーランがある。光ディスクへの書き込みでは、コンピュータ側から断片的に転送されたデータをドライブ側のバッファメモリに蓄えながら書き込むが、何らかの理由により転送が遅れてバッファメモリ内のデータが枯渇すると、バッファアンダーランとなり書き込み不良が起こる。

バッファアンダーランが発生すると使用不可能な不良ディスクができることがあるが、転送が遅れた場合に書き込みを一時停止してバッファメモリにデータが充分に蓄えられた時点で停止位置から書き込みを再開するといった、不良ディスクの発生率を低減する機能を持ったドライブが2000年頃から登場している。

脚注

関連項目 
バッファオーバーラン
処理落ち

コンピュータセキュリティ
バグ