summaryrefslogtreecommitdiff
path: root/lib/inets/src/http_lib/http_request.erl
diff options
context:
space:
mode:
authorIngela Anderton Andin <ingela@erlang.org>2015-01-27 17:00:28 +0100
committerIngela Anderton Andin <ingela@erlang.org>2015-01-29 15:50:44 +0100
commit4eeeca1538afecc294e04c50c5f6a4551eced9ec (patch)
tree612c0a7cf76a5beccbf015a388437435cace8bd1 /lib/inets/src/http_lib/http_request.erl
parentaf87b1c3d4897840d8247589a88d3611106ecedc (diff)
downloaderlang-4eeeca1538afecc294e04c50c5f6a4551eced9ec.tar.gz
inets: httpd - Sanity check of content-length header
Gracefully handle invalid content-lenght headers instead of crashing in list_to_integer.
Diffstat (limited to 'lib/inets/src/http_lib/http_request.erl')
-rw-r--r--lib/inets/src/http_lib/http_request.erl26
1 files changed, 16 insertions, 10 deletions
diff --git a/lib/inets/src/http_lib/http_request.erl b/lib/inets/src/http_lib/http_request.erl
index f295453bdd..a0833ddf01 100644
--- a/lib/inets/src/http_lib/http_request.erl
+++ b/lib/inets/src/http_lib/http_request.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2005-2014. All Rights Reserved.
+%% Copyright Ericsson AB 2005-2015. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -21,8 +21,16 @@
-include("http_internal.hrl").
--export([headers/2, http_headers/1, is_absolut_uri/1]).
+-export([headers/2, http_headers/1, is_absolut_uri/1, key_value/1]).
+
+key_value(KeyValueStr) ->
+ case lists:splitwith(fun($:) -> false; (_) -> true end, KeyValueStr) of
+ {Key, [$: | Value]} ->
+ {http_util:to_lower(string:strip(Key)), string:strip(Value)};
+ {_, []} ->
+ undefined
+ end.
%%-------------------------------------------------------------------------
%% headers(HeaderList, #http_request_h{}) -> #http_request_h{}
%% HeaderList - ["HeaderField:Value"]
@@ -34,14 +42,12 @@
%%-------------------------------------------------------------------------
headers([], Headers) ->
Headers;
-headers([Header | Tail], Headers) ->
- case lists:splitwith(fun($:) -> false; (_) -> true end, Header) of
- {Key, [$: | Value]} ->
- headers(Tail, headers(http_util:to_lower(string:strip(Key)),
- string:strip(Value), Headers));
- {_, []} ->
- headers(Tail, Headers)
- end.
+headers([{Key, Value} | Tail], Headers) ->
+ headers(Tail, headers(Key, Value, Headers));
+headers([undefined], Headers) ->
+ Headers;
+headers(KeyValues, Headers) ->
+ headers([key_value(KeyValue) || KeyValue <- KeyValues], Headers).
%%-------------------------------------------------------------------------
%% headers(#http_request_h{}) -> HeaderList