[Ultramonkey-l7-users 394] Re: l7vsdプロセスが落ちる問題

Back to archive index

KUROSAWA Takahiro takah****@gmail*****
2011年 3月 5日 (土) 13:19:53 JST


黒沢と申します.

At Fri, 4 Mar 2011 14:43:28 +0900,
yosuke takadate wrote:

> cldataのアドレスは取得できているので、
> "error / can not allocate memory for buffer"という
> エラーログは出力されておりません。
> connの内容は以下のようになっています。
> 
> (gdb) print *conn
> $1 = {lsock = 0x17b15160, srv = 0x17b151d0, dest = 0x17b23dc0, splice
> = 0, caddr = {sin_family = 2,
>     sin_port = 53934, sin_addr = {s_addr = 3894339786}, sin_zero =
> "\000\000\000\000\000\000\000"}, raddr = {
>     sin_family = 0, sin_port = 0, sin_addr = {s_addr = 0}, sin_zero =
> "\000\000\000\000\000\000\000"},
>     vaddr = {sin_family = 0, sin_port = 0, sin_addr = {s_addr = 0},
> sin_zero = "\000\000\000\000\000\000\000"},
>     laddr = {sin_family = 0, sin_port = 0, sin_addr = {s_addr = 0},
> sin_zero = "\000\000\000\000\000\000\000"},
>     ciom = 0x17afe9a0, riom = 0x17afe9c0, proto = 6 '\006', state = 0,
>     cldata = 0x1808d0d0 "POST /HOGE/upload
> HTTP/1.1\r\nX-Forwarded-For: 111.222.333.444\r\nHost:
> hoge.jp:8831\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1;
> ja; rv:1.9.2.12) Gecko/20101026"..., cldata_len = 20512,
> cldata_bufsize = 20480, cmss = 1448, sorry_conn_flag = 0, old_dest =
> 0x0}
> 
> この状態で、conn.c:2923のfreeで落ちてしまうということは、
> cldataへの格納時点で、(マルチパートリクエスト時に起きやすい
> 何らかの原因で)バッファ溢れが起きているのでしょうか。
> MALLOC_CHECKなどでmessageを検出できるように試してみたいと思います。

久々に l7vsd のコードを見るので外しているかもしれませんが,
X-Forwarded-For の追加処理で領域外アクセスを起こすように見えます.
上の core に対し,gdb から
  print &conn->cldata[20511]
を実行して文字列が表示されるようだと,領域外アクセスが起きている
可能性が高そうです.

可能でしたら,ですが,l7directord.cf の --forwarded-for の設定を
外すとひとまず問題は回避できるかもしれません.





Ultramonkey-l7-users メーリングリストの案内
Back to archive index