C言語特有の例
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/22 07:15 UTC 版)
「バッファオーバーラン」の記事における「C言語特有の例」の解説
C言語の標準入出力関数であるgets関数はバッファ長のチェックを行わないで標準入力をバッファに書き込むので、この関数を使う全てのプログラムには、バッファオーバーランによる不正動作の危険性がある。また使い方が分かりやすいという理由でC言語初心者向けの入門プログラミングでしばしば用いられるscanf関数も書式指定を誤った場合は同じ危険性を持っている。これらの関数を実用的なプログラムで用いる場合には注意が必要である。 次のプログラムはgets関数を用いた例である(セキュリティ上、gets関数はそれ自体をテストする以外の目的で使用されるべきではない。Linux Programmer's Manualには「gets()は絶対に使用してはならない。」と書かれている)。バッファ長として200バイト確保されている。gets関数はバッファの長さについては関知しないため、200バイトを超えても改行文字かEOFが現れなければバッファオーバーランが発生する。 #include
※この「C言語特有の例」の解説は、「バッファオーバーラン」の解説の一部です。
「C言語特有の例」を含む「バッファオーバーラン」の記事については、「バッファオーバーラン」の概要を参照ください。
- C言語特有の例のページへのリンク