getsの正しい使い方を考えてあげるスレ

getsをこよなく愛するID:HYjV15pa0のためにgetsの正しい使い方を考えてあげるスレです

2.名前:デフォルトの名無しさん sage 投稿日:2017/01/15(日) 21:30:00.31 ID:T6BZe6fz.net
では、どーぞ

3.名前:デフォルトの名無しさん 投稿日:2017/01/15(日) 21:40:42.25 ID:OwCHVx6x.net
老害によってC言語でのセキュアコーディング全否定まで話が飛んで行っちゃってるからこのスレタイでは役者不足だな

4.名前:デフォルトの名無しさん sage 投稿日:2017/01/15(日) 21:49:46.17 ID:T6BZe6fz.net
getsを正しく使うことが出来れば、いかなる脅威も防ぐ事が出来る

5.名前:デフォルトの名無しさん sage 投稿日:2017/01/15(日) 21:51:27.60 ID:Z39GcWi7.net
gets() はバッファに残すことがあるからな‥

6.名前:デフォルトの名無しさん sage 投稿日:2017/01/15(日) 22:06:36.99 ID:T6BZe6fz.net
まず、プログラムの先頭でfstatしてレギュラーファイル以外だったら終了
次にfseek(stdin, bufsize, SEEK_END)
これで安全にgetsが使えるぞ

7.名前:デフォルトの名無しさん 投稿日:2017/01/15(日) 23:54:33.61 ID:n4sLGdXn.net
getsは、無理

8.名前:デフォルトの名無しさん sage 投稿日:2017/01/16(月) 00:03:41.33 ID:4D4bT+Tb.net
「無理」というのはですね、嘘吐きの言葉なんです。途中で止めてしまうから無理になるんですよ。

10.名前:デフォルトの名無しさん sage 投稿日:2017/01/16(月) 01:25:27.53 ID:xL6PZBhm.net
gets_sならまだマシかも

11.名前:デフォルトの名無しさん sage 投稿日:2017/01/16(月) 01:33:24.11 ID:0nV0x3iS.net
char a[100]; // 100バイト以上無理
gets(a);


「無理」というのはですね、嘘吐きの言葉なんです。途中で止めてしまうから無理になるんですよ。

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

へー、相変わらずC言語はくだらない問題抱えてんなw
C言語自体が致命的な脆弱性持ってるんじゃねーの?www

14.名前:デフォルトの名無しさん sage 投稿日:2017/01/16(月) 01:52:47.96 ID:0nV0x3iS.net
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/c910.html
> バッファオーバーフロー(あふれ)対策が施された strcpy_s 関数をはじめとする 37の関数が導入された。

ひでーなw

C言語は高校の頃(2000年前後)に使っていたが
これらの関数使ったらバッファオーバーフロー(当時はこんな言葉知らなかった)
するけどどうやって防ぐん?って思ってたが、やはり使えない関数だったんだなw

16.名前:デフォルトの名無しさん 投稿日:2017/01/16(月) 01:59:56.49 ID:foM3Xg+4.net
strcpyは使い方次第で安全に使えるから

17.名前:デフォルトの名無しさん sage 投稿日:2017/01/16(月) 02:10:29.70 ID:0nV0x3iS.net
使い方次第というのは、strcpy自身は脆弱だから
strcpyを呼び出す前に、脆弱性を回避するための
コードを入れるということですよね?

18.名前:デフォルトの名無しさん sage 投稿日:2017/01/16(月) 05:47:48.17 ID:6vAXgKbK.net
gets_s以外の_s関数は元の関数にちょっとチェック処理加えて簡単に実装できるけど
gets_sだけはgetsを使って実装するのは無理なんだよね?
他にもダメなのがあるのかな?

19.名前:デフォルトの名無しさん sage 投稿日:2017/01/16(月) 14:08:21.93 ID:VsU1oIPP.net
sは構造体につける印だから紛らわしい

20.名前:デフォルトの名無しさん sage 投稿日:2017/01/16(月) 23:03:48.48 ID:l2xb+8XF.net
>>9
だれでも思いつくベタネタだが、まあ正しいの使い方ではあるな

21.名前:デフォルトの名無しさん sage 投稿日:2017/01/29(日) 00:08:42.83 ID:l64DxDCa.net
まあこういう単純な馬鹿をはじくということだけでも
c を採用するのは意味あることだな。

22.名前:デフォルトの名無しさん 投稿日:2017/11/05(日) 18:25:33.57 ID:rSDVGL6P.net
(σ・∀・)σゲッツ!!

23.名前:デフォルトの名無しさん sage 投稿日:2017/11/11(土) 13:59:17.04 ID:9HDWObDB.net
C言語はゴミ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする