summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Chmielowski <pawel@process-one.net>2022-08-29 11:26:31 +0200
committerPaweł Chmielowski <pawel@process-one.net>2022-08-29 11:26:31 +0200
commitfba651822dc9a718642018ba0616aefad540403a (patch)
tree552ad6db3b3ab4eed3f4ee1f2597376a90cd106d
parentUpdate roster_get hook in mod_shared_roster_ldap to use #roster_item{} (diff)
Handle invalid values in X-Forwarded-For header more gracefuly
-rw-r--r--src/ejabberd_http.erl14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/ejabberd_http.erl b/src/ejabberd_http.erl
index 56de7e25..fe13868f 100644
--- a/src/ejabberd_http.erl
+++ b/src/ejabberd_http.erl
@@ -535,12 +535,14 @@ analyze_ip_xff({IPLast, Port}, XFF) ->
TrustedProxies)
of
true ->
- {ok, IPFirst} = inet_parse:address(
- binary_to_list(ClientIP)),
- ?DEBUG("The IP ~w was replaced with ~w due to "
- "header X-Forwarded-For: ~ts",
- [IPLast, IPFirst, XFF]),
- IPFirst;
+ case inet_parse:address(binary_to_list(ClientIP)) of
+ {ok, IPFirst} ->
+ ?DEBUG("The IP ~w was replaced with ~w due to "
+ "header X-Forwarded-For: ~ts",
+ [IPLast, IPFirst, XFF]),
+ IPFirst;
+ E -> throw(E)
+ end;
false -> IPLast
end,
{IPClient, Port}.