[erlang-bugs] httpc_handler crash on malformed content-length
Ingela Anderton Andin
Ingela.Anderton.Andin@REDACTED
Tue Feb 18 12:23:18 CET 2014
Hi!
Thank you for reporting this, I have created a ticket for fixing this.
Regards Ingela Erlang/OTP team Ericsson AB
On 02/18/2014 11:24 AM, Magnus Mueller wrote:
> Hello List.
>
> httpc_handler crashes hard when the supplied content-length is not parseable with list_to_integer.
>
> == Steps to reproduce ==
>
> 1) Use netcat to listen at a specific port (nc -l 30100)
> 2) Open an Erlang shell, start inets and perform a httpc request
> 3) After httpc sent its request, write the following into stdin of netcat (followed by two newlines):
>
> HTTP/1.1 200 OK
> content-length: die!
>
> === httpc in repl ===
>
> (repl_1@REDACTED)1> inets:start().
> ok
> (repl_1@REDACTED)2> httpc:request("http://localhost:30100").
> {error,
> {badarg,
> [{erlang,list_to_integer,["die!"],[]},
> {httpc_handler,handle_http_body,2,
> [{file,"httpc_handler.erl"},{line,1143}]},
> {httpc_handler,handle_info,2,
> [{file,"httpc_handler.erl"},{line,462}]},
> {gen_server,handle_msg,5,
> [{file,"gen_server.erl"},{line,604}]},
> {proc_lib,init_p_do_apply,3,
> [{file,"proc_lib.erl"},{line,239}]}]}}
> (repl_1@REDACTED)3>
> =ERROR REPORT==== 18-Feb-2014::11:16:52 ===
> ** Generic server <0.55.0> terminating
> ** Last message in was {tcp,#Port<0.3049>,<<"\n">>}
> ** When Server state == {state,
> {request,#Ref<0.0.0.90>,<0.41.0>,0,http,
> {"localhost",30100},
> "/",[],get,
> {http_request_h,undefined,"keep-alive",
> undefined,undefined,undefined,undefined,
> undefined,undefined,undefined,undefined,
> undefined,undefined,undefined,undefined,
> undefined,undefined,"localhost:30100",
> undefined,undefined,undefined,undefined,
> undefined,undefined,undefined,undefined,
> undefined,[],undefined,undefined,
> undefined,undefined,"0",undefined,
> undefined,undefined,undefined,undefined,
> undefined,[]},
> {[],[]},
> {http_options,"HTTP/1.1",infinity,true,
> {essl,[]},
> undefined,false,infinity,false},
> "http://localhost:30100",[],none,[],
> 1392718605743,undefined,undefined,false},
> {session,
> {{"localhost",30100},<0.55.0>},
> false,http,#Port<0.3049>,ip_comm,1,keep_alive,
> false},
> undefined,undefined,undefined,
> {httpc_response,parse_headers,
> [<<"\r\n">>,"!eid :htgnel-tnetnoc",[],nolimit,
> ["OK",200,"HTTP/1.1"],
> false]},
> {[],[]},
> {[],[]},
> new,[],nolimit,nolimit,
> {options,
> {undefined,[]},
> {undefined,[]},
> 0,2,5,120000,2,disabled,false,inet,default,
> default,[]},
> {timers,[],undefined},
> httpc_manager,inactive}
> ** Reason for termination ==
> ** {badarg,[{erlang,list_to_integer,["die!"],[]},
> {httpc_handler,handle_http_body,2,
> [{file,"httpc_handler.erl"},{line,1143}]},
> {httpc_handler,handle_info,2,
> [{file,"httpc_handler.erl"},{line,462}]},
> {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,604}]},
> {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}
> _______________________________________________
> erlang-bugs mailing list
> erlang-bugs@REDACTED
> http://erlang.org/mailman/listinfo/erlang-bugs
>
More information about the erlang-bugs
mailing list