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

プレステ2の自由利用を可能にするバッファオーバフロー」記事へのコメント

  • 質問形式でお送りします (スコア:3, おもしろおかしい)

    by Anonymous Coward
    Q.なぜバッフアーオーバーフローがおこるのですか
    A.不定長のデーターに対して下のようなコードを書くからです。
    void func()
    {

    char buf[BUFSIZE];
    .
    .
    .

    }
    Q.何年も前からわかっていながら、なぜ対処しないのですか。
    A.このようなコードを書いてある本が存在するからという説と
    わざと入れているという説があります。
    Q.信じられません。自分のプログラムに穴をあけるなんて。
    A.一部のプログラマーは、これを指摘すると「仕様です」というので
    間違いありません。意図的にやっているのです。
    Q.彼らの目的は何なのです

    • by Anonymous Coward
      反論:
      このQAは表面しか見ていません。BUFSIZEを定義していることが、バッファーオーバーフローに直結するわけではありません。
      問題はBUFSIZEを限界チェックをしていなことです。限界チェックをしないのなら、#defineする必要もないはずです。
      BUFSIZEという形式だけを見て、その目的まで覚えなかった、学習者のミスです。
      • ていうか、C言語は配列の限界のチェックを自分でしなければならない言語だということが分かっていないだけでは?
        --
        (´д`;)
        • by Anonymous Coward on 2003年08月17日 20時59分 (#380469)
          > ていうか、C言語は配列の限界のチェックを自分でしなければならない言語だということが分かっていないだけでは?

          え?そんな人にCode書かせていいの?
          親コメント
          • 書かせているからこのたぐいのバグが残ったままのコードが世に出るのでは?

            まあでも入門書とかもあまり良いのがないような気がするな。

            # バッファ長を考慮しない gets() や sprintf() がある
            # というのも問題といえば問題かな?
            --
            (´д`;)
            親コメント
            • C言語の失敗は、中途半端に配列の概念を定義したことだと思うな。
              素直にポインタだけにしておけば自分で管理しなきゃならんって気がつくだろうに、あんな配列なんてBASICだのCOBOLだのから流れてきたやつはみんなしくじるよ。
              • バッファは全部動的確保しろってか?

                #次はギガ単位でmallocしてNULL検査しない奴が増えそう。。。
                --
                wild wild computing
                親コメント
              • 無知に原因のすべてを押しつけるのはちょっと無理があります。
                世の中のホールの半分くらいは、無知が原因なのではなくて
                うっかりミスが原因でしょう。
                自動的に strict な境界チェックするようなライブラリを
                用意しない限り、この手の穴は防げません。
              • セキュリティ関連のタレコミを多くしている者でさえこのコメント [srad.jp]で、
                そこら中に char buf[1024] などというコードが散乱していることが多い、というのが現状ではないでしょうか。
                などと、固定長領域を確保すること自体がいけないかのようなことを書いている有様だしねえ。
              • >固定長領域を確保すること自体がいけないかのようなことを

                それはとらえ方が違うんじゃないか?

                char buf[1024]

                #define BUFSIZE 1024
                char buf[BUFSIZE]
                では大きく違うぞ。

                前者は仕様変更があった場合に穴になりやすかろう。
                (まさか違いがわからんとか言わないだろうな)
              • 逆に却下。
                もともとメモリが少ない上に仮想メモリが存在しないんで、
                ちょっとしたフラグメンテーションがすぐ動作不安定につながる。
                こんな環境では、ヒープをスタック気味に使っていけるような
                設計にせなあかん。

                確保したメモリをいつでも再配置できるような設計にしてもいい
                けど、こんなバイオレンスな設計が必要なほどデンジャラスな
                仕事はハナから手をつけずに蹴り返すが吉。
                大抵のゲームはリアルタイム性が要求されますからねぇ。
                しかも、マルチプロセスの上にバックグラウンドでDMAが飛び交って
                いるような最近の環境でそれやらかすのは自殺行為。
                --


                # ACなのでAC
                親コメント

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

処理中...