yosuke takadate
taten****@gmail*****
2011年 3月 24日 (木) 12:48:59 JST
黒沢様、田沼様 高舘です。 情報ありがとうございます。 以下のようにコードを変更してみましたが、 やはり同じ箇所で落ちてしまうことがわかりました。 バッファは追加で確保した領域以上に格納されていないように見えるのですが・・ 【修正点】 # diff conn.c conn.c.backup 52,53d51 < #define X_FORWARDED_FOR_LENGTH 48 < 255c253 < conn->cldata = (char *)malloc(conn->cldata_bufsize + X_FORWARDED_FOR_LENGTH); --- > conn->cldata = (char *)malloc(conn->cldata_bufsize); 267c265 < memset(conn->cldata, 0, sizeof(conn->cldata)); --- > memset(conn->cldata, 0, conn->cldata_bufsize); 【core】 #0 0x00002aaea7359265 in raise () from /lib64/libc.so.6 #1 0x00002aaea735ad10 in abort () from /lib64/libc.so.6 #2 0x00002aaea739384b in __libc_message () from /lib64/libc.so.6 #3 0x00002aaea739b30f in _int_free () from /lib64/libc.so.6 #4 0x00002aaea739b76b in free () from /lib64/libc.so.6 #5 0x000000000042dc92 in l7vs_conn_send (iom=0xf5aa940, dest_fd=<value optimized out>) at conn.c:2925 #6 0x000000000042e79f in l7vs_conn_sending (iom=0xf5aa940, another_iom=0xf5aa920) at conn.c:1692 #7 0x000000000042f56f in l7vs_conn_rs_callback (iom=0xf5aa940) at conn.c:2016 #8 0x000000000040c8f8 in l7vs_iomux_poll (timo=<value optimized out>, blocking=-1) at iomux.c:773 #9 0x000000000040bd04 in main (argc=2, argv=0x7fff315ee5c8) at l7vsd.c:429 (gdb) print *conn $2 = {lsock = 0xf5be160, srv = 0xf5be1d0, dest = 0xf5c6bb0, splice = 0, caddr = {sin_family = 2, sin_port = 10542, sin_addr = {s_addr = 3807113274}, 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 = 0xf5aa920, riom = 0xf5aa940, proto = 6 '\006', state = 0, cldata = 0xf5ede00 "POST upload.php HTTP/1.1\r\nX-Forwarded-For: 111.222.333.444\r\nHost: hoge.jp\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.17) Gecko/20110121 "..., cldata_len = 0, cldata_bufsize = 20480, cmss = 1460, sorry_conn_flag = 0, old_dest = 0x0} (gdb) print &conn->cldata[20480] $3 = 0xf5f2e00 "\223\366\205\377" (gdb) print &conn->cldata[20528] $4 = 0xf5f2e30 "" conn.c 2908行目以降から、newbufを確保して conn->cldataに上書きしている箇所がございますが、 こちらも同様のサイズ(X-Forwarded-Forを追加したサイズ)を 確保する必要があるのでしょうか? また、別件で「SSLProxyでpacket_edit_httpを有効にするとHTTPファイルアップロードできない」 という問題もみつかっております。(この後、別途users-MLに報告させて頂きます) SSLProxy、l7vsdの2段構成で、X-Forwarded-for環境変数を追加している場合、 バッファサイズをより多く(48バイト以上)確保する必要性はございますでしょうか?