X



getsの正しい使い方を考えてあげるスレ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2017/01/15(日) 21:28:14.86ID:T6BZe6fz
getsをこよなく愛するID:HYjV15pa0のためにgetsの正しい使い方を考えてあげるスレです
0003デフォルトの名無しさん
垢版 |
2017/01/15(日) 21:40:42.25ID:OwCHVx6x
老害によってC言語でのセキュアコーディング全否定まで話が飛んで行っちゃってるからこのスレタイでは役者不足だな
0006デフォルトの名無しさん
垢版 |
2017/01/15(日) 22:06:36.99ID:T6BZe6fz
まず、プログラムの先頭でfstatしてレギュラーファイル以外だったら終了
次にfseek(stdin, bufsize, SEEK_END)
これで安全にgetsが使えるぞ
0007デフォルトの名無しさん
垢版 |
2017/01/15(日) 23:54:33.61ID:n4sLGdXn
getsは、無理
0008デフォルトの名無しさん
垢版 |
2017/01/16(月) 00:03:41.33ID:4D4bT+Tb
「無理」というのはですね、嘘吐きの言葉なんです。途中で止めてしまうから無理になるんですよ。
0009デフォルトの名無しさん
垢版 |
2017/01/16(月) 01:21:04.13ID:0nV0x3iS
                 _____
               /ミミ\\\\ \
             /ミミミ\\\\\\\
            /彡ミミミ\\\\\\\\
            |彡ミミ/\\\\\\\\|
              |彡 |   \\\\\\\|
             ヽ |へ、_  _,へ\\\\/
              | __   __  | / )   ゲッツ!!
              |           |/ ノ
              |   ( / _ )      /
              ヽ       ヽ   |
               ヽ ヽー‐‐‐ァ   /\
              //ヽ ヽ-‐'  / /\ \
            / /   ヽ_ /   / /   \
          /   \  |\  /|  /\      \
   (⌒\  /     (⌒ヽ |二| | /  \      \
 __ゝ  ヽ    ___ ゝ \  \| /   /       |
(        ヽ─ ( l )     ヽヽ  /  /   /     |
  ̄ ̄( ̄丿  |    ̄ ̄( ̄ ゝ  \ /    /       |
    ( ̄ノ  |      ( ̄ ゝ   | ̄ ̄ ̄ ̄        |
0011デフォルトの名無しさん
垢版 |
2017/01/16(月) 01:33:24.11ID:0nV0x3iS
char a[100]; // 100バイト以上無理
gets(a);


「無理」というのはですね、嘘吐きの言葉なんです。途中で止めてしまうから無理になるんですよ。
0012デフォルトの名無しさん
垢版 |
2017/01/16(月) 01:34:54.78ID:0nV0x3iS
> gets は、C言語における標準入力から1行分の文字列を取り出す関数である。
> この関数はバッファオーバーランを防ぐことが不可能という致命的な脆弱性を持っており、
> 2011年の改定のC11の標準CライブラリやC++14の標準C++ライブラリより廃止された[1]。

へー、相変わらずC言語はくだらない問題抱えてんなw
C言語自体が致命的な脆弱性持ってるんじゃねーの?www
0013デフォルトの名無しさん
垢版 |
2017/01/16(月) 01:44:05.68ID:0nV0x3iS
>>10
> gets_sならまだマシかも

gets_sって標準関数なのかw

俺の記憶が正しければ、C言語の脆弱性に業を煮やしたマイクロソフトが
おめーら使うんじゃねーよ。全部、_s関数シリーズで置き換えてやらぁって
作ったものだと思ってたがw

http://www.kumei.ne.jp/c_lang/intro2/no_125.htm
> なお、gets_sとかstrcpy_s関数はVS2005特有の関数なので、現在のところ他の 環境では使うことができません。

そうか、マイクロソフトがC言語標準になったのかw
0014デフォルトの名無しさん
垢版 |
2017/01/16(月) 01:52:47.96ID:0nV0x3iS
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/c910.html
> バッファオーバーフロー(あふれ)対策が施された strcpy_s 関数をはじめとする 37の関数が導入された。

ひでーなw

C言語は高校の頃(2000年前後)に使っていたが
これらの関数使ったらバッファオーバーフロー(当時はこんな言葉知らなかった)
するけどどうやって防ぐん?って思ってたが、やはり使えない関数だったんだなw
0015デフォルトの名無しさん
垢版 |
2017/01/16(月) 01:56:54.58ID:0nV0x3iS
https://www.jpcert.or.jp/sc-rules/c-str07-c.html

> C 標準の附属書 K (規定) "Bounds-checking interfaces" [ISO/IEC 9899:2011] は、
> 既存の標準文字列処理関数に代わり、より安全に利用できるように設計された代替関数を規定している。
> たとえば、strcpy()、strcat()、strncpy() および strncat() の代替関数として、
> それぞれ strcpy_s()、strcat_s()、strncpy_s() および strncat_s() 関数を定義している。
>
> 附属書 K の関数は、過去 10 年間に起きた広く知られている多数のセキュリティインシデントに対応して、
> レガシーコードの改善に役立てる目的で Microsoft によって作成された。これらの関数はその後、
> プログラミング言語 C の国際標準化ワーキンググループ(ISO/IEC JTC1/SC22/WG14)へ、標準化のために提案された。

あってたーw
マイクロソフトがC標準関数を置き換えたという事実。
_sというダサいネーミングセンスによってC言語がマイクロソフトに犯されてしまってたwww
0016デフォルトの名無しさん
垢版 |
2017/01/16(月) 01:59:56.49ID:foM3Xg+4
strcpyは使い方次第で安全に使えるから
0017デフォルトの名無しさん
垢版 |
2017/01/16(月) 02:10:29.70ID:0nV0x3iS
使い方次第というのは、strcpy自身は脆弱だから
strcpyを呼び出す前に、脆弱性を回避するための
コードを入れるということですよね?
0018デフォルトの名無しさん
垢版 |
2017/01/16(月) 05:47:48.17ID:6vAXgKbK
gets_s以外の_s関数は元の関数にちょっとチェック処理加えて簡単に実装できるけど
gets_sだけはgetsを使って実装するのは無理なんだよね?
他にもダメなのがあるのかな?
0021デフォルトの名無しさん
垢版 |
2017/01/29(日) 00:08:42.83ID:l64DxDCa
まあこういう単純な馬鹿をはじくということだけでも
c を採用するのは意味あることだな。
0022デフォルトの名無しさん
垢版 |
2017/11/05(日) 18:25:33.57ID:rSDVGL6P
(σ・∀・)σゲッツ!!
0024デフォルトの名無しさん
垢版 |
2018/05/23(水) 21:17:37.59ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

7P00B
0025デフォルトの名無しさん
垢版 |
2018/07/05(木) 00:40:09.26ID:RfoszcD2
L51
0026デフォルトの名無しさん
垢版 |
2018/11/20(火) 19:22:26.88ID:fLsKk4Je
gets
0027デフォルトの名無しさん
垢版 |
2020/04/22(水) 21:23:18.76ID:TQVQtNCZ
馬鹿には使えない言語
しかし世の中には一定数の馬鹿が居るので
一定確率でとんでもない事故を引き起こしてしまう
精神論に対しては冷静な指摘をする純真な子供が必要だ
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況