TATEISHI Katsuyuki
tatei****@oss*****
2011年 3月 24日 (木) 18:57:40 JST
立石です。 yosuke takadate <taten****@gmail*****>-san wrote: > 以下のようにコードを変更してみましたが、 > やはり同じ箇所で落ちてしまうことがわかりました。 > バッファは追加で確保した領域以上に格納されていないように見えるのですが・・ 添付のパッチでいかがでしょうか? 1. 問題の本質ではないですが、 X_FORWARDED_FOR_LENGTH は include/l7vs_conn.h で定義したほうがよさそうなので、そっ ちで定義しています。名前も L7VS_X_FORWARDED_FOR_HEADER_LEN としています。 2. conn->cldata を malloc() しているところは2個所あるので、 両方で確保するようにしました。 3. sizeof(conn->cldata) だと、ポインタのサイズになってしまう と思うので、memset()の引数はいじらず、cldata_bufsize その ものに l7vs_conn_read_bufsize + L7VS_X_FORWARDED_FOR_HEADER_LEN を代入しています。 パッチはソースツリーのトップディレクトリで % patch -p1 < bufsize_fix.patch であてることができます。 なお、手元では、一旦オリジナルの 2.1.3-1 において /etc/l7vs/l7vs.conf 内で read_bufsize = 256 を設定し、 % dd if=/dev/urandom of=1M bs=1M count=1 % wget --no-proxy -O - --post-file=1M http://192.168.122.64/index.html のように 1MB のファイルをPOSTすると l7vsd が落ちるのを確認。 パッチをあてた後は落ちなくなったのを確認しています。 (192.168.122.64は UML7 仮想サービスの IP アドレスです。) -- TATEISHI Katsuyuki <tatei****@oss*****> -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: bufsize_fix.patch 型: text/x-patch サイズ: 1836 バイト 説明: 無し Download