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

■ このスレッドは過去ログ倉庫に格納されています

Appleの最悪な脆弱性で再燃のgoto不要論 ← 馬鹿?

1 :デフォルトの名無しさん:2014/02/23(日) 19:18:14.11
http://appllio.com/20140223-4899-apple-ios-bug-ssl-goto-fail

>  if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
>    goto fail;
>  if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
>    goto fail;
>    goto fail;
>  if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
>    goto fail;

馬鹿いわく、gotoなんか使うな!

↓ 本当かね? じゃあ例外に置き換えてみよう。

 if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
   throw new Exception();
   throw new Exception();

ありゃりゃ、例外使っても同じことでした。

正しくは、「一行であっても { } で括ること」いうコーディング規約は正しいということ。

 if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0) {
    goto fail;
 }
    goto fail;

ほら、間違いにすぐ気づく

2 :デフォルトの名無しさん:2014/02/23(日) 19:31:12.13
一日に何百、何千と立てられる2ちゃんのスレッド。
その中には良スレもあれば、糞スレもありますがこのスレはまさに後者でしょう。
>>1がどんな思いを込めて、このような糞スレを立ててしまったのか私たちには知る由もありません。
ただ一つわかってほしいのは、決して>>1に悪気があったわけではないということです。
どうか皆さん、糞スレを立ててしまった>>1を許してあげてください。
いつの日か>>1が、この失敗を糧に良スレを立てられるようになるといいですね。

3 :デフォルトの名無しさん:2014/02/23(日) 20:44:50.05
好きなところでgoto使っていいよ

4 :デフォルトの名無しさん:2014/02/24(月) 02:29:20.27
コーディング規約とかは後回しでいいから
まじめにテストしろよ。

5 :デフォルトの名無しさん:2014/02/24(月) 07:05:04.93
Apple「関係ないね」

6 :デフォルトの名無しさん:2014/02/24(月) 10:54:50.80
python最強やな

7 :デフォルトの名無しさん:2014/02/24(月) 14:18:09.45
せやな。パイソンだったら2行目のgotoは実行されなかった

8 :デフォルトの名無しさん:2014/02/24(月) 21:05:58.06
そんな大事なところをコピペグラマにやらせるなよ

9 :デフォルトの名無しさん:2014/02/25(火) 01:08:17.33
errに成功が入った状態でreturn err;されるのが問題であって
例外を対比に出す意味がわからん

10 :デフォルトの名無しさん:2014/02/25(火) 04:52:42.10
>>9
お前がスレタイ読めない池沼だという事は十分に伝わった

11 :デフォルトの名無しさん:2014/02/25(火) 07:29:54.92
成功するのにfailてのがおかしい

12 :デフォルトの名無しさん:2014/02/25(火) 08:03:14.27
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

13 :デフォルトの名無しさん:2014/02/25(火) 13:28:12.45
しばらくわからなかったが SSLのあたりでやらかしてるのが問題なわけね

キモの部分をまともにテストしてないことを叩くべき

14 :デフォルトの名無しさん:2014/02/25(火) 13:56:59.00
防止策としてはコンパイラの警告レベルを上げて
到達しないコードを検出すれば良い

15 :デフォルトの名無しさん:2014/02/27(木) 08:51:37.81
>>1
ifで括弧くくらないのは一行の時だけだと思ってた
改行して直下はif内、2行下はif外とか言語仕様がおかしいんじゃね?

16 :デフォルトの名無しさん:2014/02/27(木) 09:24:52.67
1行の途中で改行されてるだけだろ?

17 :デフォルトの名無しさん:2014/02/27(木) 11:02:18.87
>>15
例えばこんなコードもしばしば見る。
for (int y = 0; y < height; ++y)
for (int x = 0; x < width; ++x)
printf("%d ", a[y][x]);

これも、セミコロンまでの物理的な3行分が1文ということ。
if (i == 0)
func0();
else if (i == 1)
func1();
else
func2();

これでも1文。こいつを複文化して、
if (i == 0) {
func0();
} else if (i == 1) {
func1();
} else {
func2();
}
というのもよく見かけるが、実はelse ifの間で分割するべきな構造を便宜上分割しないで使っている。

18 :デフォルトの名無しさん:2014/02/27(木) 19:45:24.13
>>17
うわあ、俺こんな書き方堪えられんわ

19 :デフォルトの名無しさん:2014/02/27(木) 23:14:13.07
機械語にすりゃ制御構造なんてjump文だろ
可読性が悪くなるとか言うが、
オブジェクトの階層が深すぎでオーバーライドし過ぎのコードよかましだわ
暗黙の呼び出しが多すぎる

20 :デフォルトの名無しさん:2014/02/28(金) 18:26:26.23
つまり、抽象化は苦手だと。

21 :デフォルトの名無しさん:2014/03/01(土) 15:07:46.79
「捨てっちまおう」
「なに!?」
「goto文だよ」
「goto文!?バグの原因になるというあれか!」
「SSLの認証コードにまで入り込んでたたぁな・・・次元!次のタスクは決まったぜ!」
「くそー!このっ!くそっ、くそっ、くそっ!」(←リファクタリング中)

22 :デフォルトの名無しさん:2014/03/01(土) 22:06:32.23
Objective-Cなんていうゴミを採用した時点でアイホーンの限界は知れてた。

23 :デフォルトの名無しさん:2014/03/01(土) 23:13:44.86
Goto使って飛んだって1関数内だけだからどってことねえ

24 :デフォルトの名無しさん:2014/03/01(土) 23:45:09.31
問題のソースはCなんだけど。

25 :デフォルトの名無しさん:2014/03/02(日) 06:07:28.35
>>22
ガベコレのないObjective-Cを使ってるからiPhoneはAndroidと違ってぬるぬるスムーズ動作なんだけど
(ついでにあまりにも上手くいったからその成功をMacにフィードバック済み)
何言ってんの?

26 :デフォルトの名無しさん:2014/03/02(日) 06:11:57.29
Objective-Cを軽々しくdisるやつは何もわかっちゃいない
慣れれば変態文法も糞長いメソッド名もすべてが可愛らしく見えてくるというのに

27 :デフォルトの名無しさん:2014/03/02(日) 08:35:45.70
Objective-Cが本当に何だか知らないでdisる子いるけど
あれ、関数にあたる単位をオブジェクトクラスとして動的に扱うという
その名前まんま"オブジェクティブなC"だから
クラスの取り回しとメッセージ送信以外の記法は完全にCだぞ。

28 :デフォルトの名無しさん:2014/03/02(日) 09:00:22.02
下手するとソースの80%くらいはCの構文で書いてるもんな。

29 :デフォルトの名無しさん:2014/03/02(日) 12:48:01.86
>>25
メモリがすぐ食い潰されんのもそのせいか

30 :デフォルトの名無しさん:2014/03/02(日) 17:46:14.14
はてブにテスト厨ウザイ!検証漏れなんか出て当たり前だろ!ってのが居たが
だからまずテスト書いてテストに無関係なコード書くなってんだよ無能が

31 :デフォルトの名無しさん:2014/03/02(日) 19:55:39.49
>>29
ほらまた「参照カウント方式」がなんなのかすら知らずに
まったく知らないものをdisろうとする…

32 :デフォルトの名無しさん:2014/03/02(日) 20:55:41.81
参照をカウントする方式だろ

33 :デフォルトの名無しさん:2014/03/04(火) 00:49:41.44
どうかんがえてもerrをUnexpectedErrorかなんかで初期化してないのがわるいと思うの

34 :デフォルトの名無しさん:2014/03/04(火) 23:05:05.39
それはバグの発見を遅らせるだけ

35 :デフォルトの名無しさん:2014/03/04(火) 23:08:44.27
>>34
ん?なんで遅れると思うの?

36 :デフォルトの名無しさん:2014/03/05(水) 01:41:28.57
プログラムのバグのために例外トラップを使うようなもの

37 :デフォルトの名無しさん:2014/03/05(水) 03:11:46.14
今回のバグは
if ((err = ...) != 0)
 goto fail;
 goto fail;
で、必ずerrに代入されるので、errを初期化しても防げないよ。

38 :デフォルトの名無しさん:2014/03/05(水) 03:19:28.54
>>37
あ、ほんとだ…

39 :デフォルトの名無しさん:2014/03/05(水) 07:46:46.62
余分なgoto文以降は実行されないので、コンパイラの警告レベル上げとけば発見出来たバグ。

40 :デフォルトの名無しさん:2014/03/05(水) 10:53:14.64
LinuxのSSL/TLSライブラリ(GnuTLS)にもgotoバグとか…。
http://www.zdnet.com/goto-apple-gnutls-falls-foul-of-ssl-certificate-verification-issues-7000026957/

41 :デフォルトの名無しさん:2014/03/05(水) 12:47:02.12
とくに探す気もないがいまごろ関数型プログラミング信者がどこかで
「ほっら!ほっら!!関数型言語ならこんなことは起きないんだよ!!!」
ってふしぎなおどりを踊ってるような気がしてならない。

42 :デフォルトの名無しさん:2014/03/05(水) 14:23:11.30
起きないけど、言語がどうこうじゃなくって
そんな底辺の働き方しないからだ

43 :デフォルトの名無しさん:2014/03/05(水) 19:23:12.51
そういえばWindowsでSafariやらQuickTimeやらは
普通に使っててもすぐ落ちるからApple嫌いになったのを思い出した

44 :デフォルトの名無しさん:2014/03/05(水) 22:22:40.56
Windowsはすぐアプリが落ちて書きかけの
一生懸命書いた英語のメールがパァになるOSだからな。

45 :デフォルトの名無しさん:2014/03/06(木) 00:46:01.58
ちゃんとURLまで張らないと
ttp://www.youtube.com/watch?v=-i6xEcBEDjc

46 :デフォルトの名無しさん:2014/03/20(木) 08:53:11.13 ID:9ia9BXXn
がくせぇ

47 :停止しました。。。:停止
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ

10 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)