パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

iOS7.0.6で修正された「最悪のセキュリティバグ」はありがちなコーディングミスで発生していた」記事へのコメント

  • 警告を無視しちゃいかんという教訓を得たと。

    こんな感じに、if分を一行にまとめてしまえば、こんな不具合出なかった気がします。

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

    一行が長くなるのを嫌ったのかな?

    • unreachable codeの検出は、停止性問題と同じなんで、goto文みたいな自由度の高い構文ではうまく動かないんじゃないのかね。
      それ以前にgccもclangもgotoの警告はやる気ないから

      親コメント
      • by Anonymous Coward

        XCodeとかいうゴミだとどうかわからないけど、AppCodeだと普通に警告されたよ

      • by Anonymous Coward

        > unreachable codeの検出は、停止性問題と同じなんで

        違いますね

        到達する可能性があるか、全くないかの判定だけすればいいので

      • by Anonymous Coward

        gotoの直後のラベルの無いステートメントに到達しないことがわからないなんて
        停止性云々以前にコンパイラのフロー解析がダメダメですね。

      • by Anonymous Coward

        停止問題を起こすにはwhile文1個で十分なのにちょっと何言ってるのかわからない。
        それどころかライスの定理によれば「常に1を返す」とか「常に0を返す」のような自明なプログラム以外はすべて決定不能だ。

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

処理中...