iOSのSSL周りのバグに見るC言語におけるエラーハンドリングが糞だという話

早くC言語を消し去りたい
3
さきさか @_n_s_7_

goto文ワロタ / 金曜日にAppleはiOS 7の深刻重大なバグを修復 | TechCrunch Japan http://t.co/4zd3yLh8fI

2014-02-23 14:36:21
Steve Streza 🏳️‍🌈 @SteveStreza

Update your iPhones/iPads now. The SSL bug is really bad. Always brace your if statements. https://t.co/eyeDvhwAV9 http://t.co/lEgUdqZChu

2014-02-23 01:33:58
拡大
さきさか @_n_s_7_

これgoto文は論外なんだけどif文の方が問題でしょwwwwwwwwwwwwwwwwwwwwww

2014-02-23 14:38:00
さきさか @_n_s_7_

C言語とかいう邪悪な言語を使うからこういうことになるんだよ。C++でoptionalと例外をきちんと使ってエラーハンドリングしてれば絶対にこんな馬鹿馬鹿しいミスは起こらない。

2014-02-23 14:39:44
さきさか @_n_s_7_

いい加減組み込みやら何やらの低級なコードも全部C++にマイグレーションして欲しい

2014-02-23 14:40:06
さきさか @_n_s_7_

カーネル周りや処理系周りや低級ライブラリ周りのC言語おじさんたちはC++大嫌いだから絶対無理なんだろうけど

2014-02-23 14:41:41
naoina @naoina

iOSのアレ、別に言語の問題ではない

2014-02-23 14:43:22
さきさか @_n_s_7_

@naoina いや言語の問題ですよ。言語に例外機構が無いから不自由な記述を強いられた結果発生したバグなので、言語の問題以外の何者でもありません。

2014-02-23 14:44:11
さきさか @_n_s_7_

そりゃあ腹立つでしょこんなバグ見せられたら。まともにテストすらしてないでしょ。

2014-02-23 14:45:55
naoina @naoina

@sksk7_ 例外機構がある場合でもJavaみたいなチェック例外でない限り例外を使うかどうか、それを適切に処理するかどうかは書き手次第なので、同様のバグが埋め込まれる可能性はあるんじゃないでしょうか

2014-02-23 14:50:10
さきさか @_n_s_7_

@naoina プログラマがミスをする可能性があるかどうかと、その言語でそもそもそういう記述が可能かどうかっていうのは全く別の問題です。

2014-02-23 14:51:23
さきさか @_n_s_7_

@naoina あとC++的な例外でも、キャッチする側が例外を正しく扱わなかった場合でもプログラムが落ちることが期待出来るので、正しく扱われなくても問題ないです。

2014-02-23 14:52:23
さきさか @_n_s_7_

C言語はクソC言語はクソC言語はクソ

2014-02-23 14:53:21
naoina @naoina

@sksk7_ 自分としてはあれはプログラマのミスだと思うので、言語如何ではないとの考えです

2014-02-23 14:53:32
さきさか @_n_s_7_

@naoina はい。直接的な原因はプログラマのミスだと僕も思います。でもその「原因を作った原因」は言語の表現力が低すぎることなので、元々の原因は言語の問題です。原因の原因が原因です。

2014-02-23 14:55:02
naoina @naoina

@sksk7_ それはそうですね。ただ今回の場合だとエラー(例外)を投げる側でのバグなので、gotoなのかthrowなのかにはよらないかと思います

2014-02-23 14:55:34
さきさか @_n_s_7_

@naoina 例えば、線路に人が居て運転手がブレーキを踏み遅れて轢き殺した場合、その人が死んだ直接的な原因は運転手の操作ミスですが、本来の原因は車両に自動停止装置がついていないことが原因です。僕が言っているのはそういうことです。前者を否定はしていません。

2014-02-23 14:56:52
naoina @naoina

うーん、自分の中では言語の表現力が高くてもそれを使うかどうかはプログラマに依存するので、言語が原因だとは言えないですね

2014-02-23 14:56:54
naoina @naoina

結局はテストしろやってのとプログラマを殺すしかない

2014-02-23 14:57:34
さきさか @_n_s_7_

@naoina 大元のバインディングがそもそも最初から例外を使っていれば問題が発生しないのです。このバグにおける悪い点は第一にiOSのユーザコードの記述ミスですが、第二に元々のOpenSSLバインディングで例外機構を使っておらず戻り値に依存している点だと考えます。

2014-02-23 14:58:28
naoina @naoina

思考がうまく言語化できない

2014-02-23 15:13:09
naoina @naoina

@sksk7_ 使われる側で抑制できる方が良いのは間違いないですね。ただ現在そうなっていないものが問題とまでは思えないですね。ここは多分考え方の違いなので難しいところです

2014-02-23 15:30:44
naoina @naoina

包丁は道具なのか凶器なのかは使う側に依存するけど、だからといって包丁が人を傷つけられるのが問題かというと。危険性よりも便利さを取っているというかそんな感じ

2014-02-23 15:32:44