Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       gets - 標準入力からの文字列を取得する (非推奨)

書式

       #include <stdio.h>

       char *gets(char *s);

説明

       この関数は使用しないことgets()   は、改行文字か  EOF  までの 1行を stdin から読み込み s が指すバッファーに格納する
       (末尾の改行文字や EOF  はヌルバイト  ('\0')  に置き換えられる)。  バッファーオーバーランの
       チェックは行われない (下記の「バグ」を参照)。

返り値

       gets()  は、成功すると  s  を返し、エラーや 1 文字も読み込んでいないのにファイルの終わりに
       なった 場合に NULL を返す。 しかし、バッファーの行き過ぎのチェックが行われないため、この関
       数が返るという保証はない。

属性

       この節で使用されている用語の説明については、 attributes(7) を参照。

       ┌─────────────────┬───────────────┬─────────┐
       │インターフェース属性      │
       ├─────────────────┼───────────────┼─────────┤
       │gets()           │ Thread safety │ MT-Safe │
       └─────────────────┴───────────────┴─────────┘

準拠

       C89, C99, POSIX.1-2001.

       LSB  は  gets() を非推奨としている。 POSIX.1-2008 では gets() に廃止予定の印が付けられてい
       る。 ISO C11 では gets)() の規定が C 言語から削除されている。 glibc バージョン 2.16 以降で
       は、機能検査マクロ _ISOC11_SOURCE が定義された 場合、glibc ヘッダーファイルでは gets)() の
       宣言が公開されない。

バグ

       gets()  は絶対に使用してはならない。 前もってデータを知ることなしに gets()  が何文字読むか
       を知ることはできず、 gets()  がバッファーの終わりを越えて書き込み続けるため、 gets()  を使
       うのは極めて危険である。 これを利用してコンピュータのセキュリティが破られてきた。 代わりに
       fgets()  を使うこと。

       詳しい情報については、CWE-242 (別名 "Use of Inherently Dangerous Function" (「本質的に危険
       な関数を使う」)) を参照。 http://cwe.mitre.org/data/definitions/242.html で参照できる。

関連項目

       read(2),  write(2),  ferror(3),  fgetc(3),  fgets(3),  fgetwc(3),   fgetws(3),   fopen(3),
       fread(3),    fseek(3),    getline(3),    getwchar(3),   puts(3),   scanf(3),   ungetwc(3),
       unlocked_stdio(3), feature_test_macros(7)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。