diff options
author | Fredrik Gustafsson <[email protected]> | 2013-03-12 16:19:59 +0100 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2014-02-05 10:32:22 +0100 |
commit | 68cecbfa6a9d79b9137c2cf797b0499c9daed27b (patch) | |
tree | 35a900b90a32834ddea61bed601568e07b1dff0f | |
parent | 023a3b53e6011e05f46013104146fcd6df97fd75 (diff) | |
download | otp-68cecbfa6a9d79b9137c2cf797b0499c9daed27b.tar.gz otp-68cecbfa6a9d79b9137c2cf797b0499c9daed27b.tar.bz2 otp-68cecbfa6a9d79b9137c2cf797b0499c9daed27b.zip |
Added guard for invalid field and values in headers
-rw-r--r-- | lib/inets/src/http_client/httpc.erl | 16 | ||||
-rw-r--r-- | lib/inets/test/httpc_SUITE.erl | 7 |
2 files changed, 19 insertions, 4 deletions
diff --git a/lib/inets/src/http_client/httpc.erl b/lib/inets/src/http_client/httpc.erl index eb7102d046..fc2081239e 100644 --- a/lib/inets/src/http_client/httpc.erl +++ b/lib/inets/src/http_client/httpc.erl @@ -163,8 +163,13 @@ request(Method, {error, Reason} -> {error, Reason}; {ok, ParsedUrl} -> - handle_request(Method, Url, ParsedUrl, Headers, [], [], - HTTPOptions, Options, Profile) + case header_parse(Headers) of + {error, Reason} -> + {error, Reason}; + _ -> + handle_request(Method, Url, ParsedUrl, Headers, [], [], + HTTPOptions, Options, Profile) + end end; request(Method, @@ -1247,7 +1252,12 @@ uri_parse(URI, Opts) -> %%-------------------------------------------------------------------------- - +header_parse([]) -> + ok; +header_parse([{Field, Value}|T]) when is_list(Field), is_list(Value) -> + header_parse(T); +header_parse(_) -> + {error, {headers_error, not_strings}}. child_name2info(undefined) -> {error, no_such_service}; child_name2info(httpc_manager) -> diff --git a/lib/inets/test/httpc_SUITE.erl b/lib/inets/test/httpc_SUITE.erl index 43eaa48961..15792a1b36 100644 --- a/lib/inets/test/httpc_SUITE.erl +++ b/lib/inets/test/httpc_SUITE.erl @@ -83,7 +83,8 @@ real_requests()-> stream_through_fun, stream_through_mfa, streaming_error, - inet_opts + inet_opts, + invalid_headers ]. only_simulated() -> @@ -795,6 +796,10 @@ headers_dummy(Config) when is_list(Config) -> %%------------------------------------------------------------------------- +invalid_headers(Config) -> + Request = {url(group_name(Config), "/dummy.html", Config), [{"cookie", undefined}]}, + {error, _} = httpc:request(get, Request, [], []). + remote_socket_close(Config) when is_list(Config) -> URL = url(group_name(Config), "/just_close.html", Config), {error, socket_closed_remotely} = httpc:request(URL). |