アカウント名:
パスワード:
char buf[BUFSIZE]; . . .
} Q.何年も前からわかっていながら、なぜ対処しないのですか。 A.このようなコードを書いてある本が存在するからという説と わざと入れているという説があります。 Q.信じられません。自分のプログラムに穴をあけるなんて。 A.一部のプログラマーは、これを指摘すると「仕様です」というので 間違いありません。意図的にやっているのです。 Q.彼らの目的は何なのです
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
人生unstable -- あるハッカー
質問形式でお送りします (スコア:3, おもしろおかしい)
A.不定長のデーターに対して下のようなコードを書くからです。
void func()
{
}
Q.何年も前からわかっていながら、なぜ対処しないのですか。
A.このようなコードを書いてある本が存在するからという説と
わざと入れているという説があります。
Q.信じられません。自分のプログラムに穴をあけるなんて。
A.一部のプログラマーは、これを指摘すると「仕様です」というので
間違いありません。意図的にやっているのです。
Q.彼らの目的は何なのです
Re:質問形式でお送りします (スコア:3, すばらしい洞察)
このQAは表面しか見ていません。BUFSIZEを定義していることが、バッファーオーバーフローに直結するわけではありません。
問題はBUFSIZEを限界チェックをしていなことです。限界チェックをしないのなら、#defineする必要もないはずです。
BUFSIZEという形式だけを見て、その目的まで覚えなかった、学習者のミスです。
Re:質問形式でお送りします (スコア:3, おもしろおかしい)
A.サイズをチェックするのは、みんな気がついている思います。問題はその後です
Q.scanfを使うなとか fgets(buf,BUFSIZE,fp)ですか
A.それほど簡単な問題ではありません。bufに収まらなかった時の処理が必要です。
Q.それはどんなものがありますか
A.
1.切り捨てる
2.さらに大きなバッフアーを確保する
3.ループで順次処理する
1の切り捨てるのは乱暴なようですが、背に腹は代えられません。
2の方法はmallocを使って確保
Re:質問形式でお送りします (スコア:0)
ネタにマジレスするのは、礼儀です。
Q.ではどうしたらいいんでしょう?
A.パフォーマンスが落ちるからという理由で、たまたま知っているルーチンで処理をおこなうのがいけないのです。じっくり読み込んでいけば、バッファーオ
Re:質問形式でお送りします (スコア:0)
A.たとえば最初の例だとbuf[2][BUFSIZE]というようにバッフアーを二つとります。
そして、データを奇数バッフアー、偶数バッフアーの交互に読み取ります。
Q.なぜそんな面倒なことをするのですが
A.BUFSIZEで切断されたデーターの前後をみたいからです。たとえば2バイト文字コードのとか。分断されたキーワードとかです。圧縮されたデーターなどでは11bitとかの半端なビット長がまたがっていることもあります。
Q.文字列処理ばりばりのコンパイラならいざしらず、滅多にないようなデーターに対して、おおがかりすぎませんか。
A.そ
本日のつぼ (スコア:0)
# とACに対するマイナスモデが無効な例を出してみる