2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

getsの正しい使い方を考えてあげるスレ [無断転載禁止]©2ch.net

1 :デフォルトの名無しさん:2017/01/15(日) 21:28:14.86 ID:T6BZe6fz
getsをこよなく愛するID:HYjV15pa0のためにgetsの正しい使い方を考えてあげるスレです

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

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

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

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

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

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

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

9 :デフォルトの名無しさん:2017/01/16(月) 01:21:04.13 ID:0nV0x3iS
                 _____
               /ミミ\\\\ \
             /ミミミ\\\\\\\
            /彡ミミミ\\\\\\\\
            |彡ミミ/\\\\\\\\|
              |彡 |   \\\\\\\|
             ヽ |へ、_  _,へ\\\\/
              | __   __  | / )   ゲッツ!!
              |           |/ ノ
              |   ( / _ )      /
              ヽ       ヽ   |
               ヽ ヽー‐‐‐ァ   /\
              //ヽ ヽ-‐'  / /\ \
            / /   ヽ_ /   / /   \
          /   \  |\  /|  /\      \
   (⌒\  /     (⌒ヽ |二| | /  \      \
 __ゝ  ヽ    ___ ゝ \  \| /   /       |
(        ヽ─ ( l )     ヽヽ  /  /   /     |
  ̄ ̄( ̄丿  |    ̄ ̄( ̄ ゝ  \ /    /       |
    ( ̄ノ  |      ( ̄ ゝ   | ̄ ̄ ̄ ̄        |

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

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


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

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

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

13 :デフォルトの名無しさん:2017/01/16(月) 01:44:05.68 ID: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

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

ひでーなw

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

15 :デフォルトの名無しさん:2017/01/16(月) 01:56:54.58 ID: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

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

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

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

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

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

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

7 KB
新着レスの表示

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)