C言語特有の例とは? わかりやすく解説

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 int main(int argc, char *argv[]){ char buf[200]; gets(buf); ....} gets関数代わりにfgets関数用いることで、この問題回避できるfgets#getsを置き換える例等を参照)。fgets関数にはバッファサイズを渡すことができ、このバイト数を超えてバッファ書き込み行わない。したがってバッファサイズが正しく設定されていればfgets関数においてバッファオーバーラン起こり得ない。 これ以外のC言語標準文字列処理関数多くにも同様の問題脆弱性)がある。

※この「C言語特有の例」の解説は、「バッファオーバーラン」の解説の一部です。
「C言語特有の例」を含む「バッファオーバーラン」の記事については、「バッファオーバーラン」の概要を参照ください。

ウィキペディア小見出し辞書の「C言語特有の例」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「C言語特有の例」の関連用語

1
4% |||||

C言語特有の例のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



C言語特有の例のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのバッファオーバーラン (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS