Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2019-01-30 18:34:29 +0300
committerPaweł Chmielowski <pchmielowski@process-one.net>2019-01-30 18:34:29 +0300
commit56baa07d486f68fc5275d830837bdd918680d28b (patch)
tree2f21c44254321eb45a4794f0478075de70742918 /src/mod_http_api.erl
parent096b4a50e59522d1f324d8d5c870f27ddc4425f9 (diff)
Reject request http_api request that have malformed Authentication header
Diffstat (limited to 'src/mod_http_api.erl')
-rw-r--r--src/mod_http_api.erl24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/mod_http_api.erl b/src/mod_http_api.erl
index d31ca0f11..7a4c73315 100644
--- a/src/mod_http_api.erl
+++ b/src/mod_http_api.erl
@@ -139,28 +139,30 @@ depends(_Host, _Opts) ->
extract_auth(#request{auth = HTTPAuth, ip = {IP, _}, opts = Opts}) ->
Info = case HTTPAuth of
- {SJID, Pass} ->
- try jid:decode(SJID) of
+ {SJID, Pass} ->
+ try jid:decode(SJID) of
#jid{luser = User, lserver = Server} ->
- case ejabberd_auth:check_password(User, <<"">>, Server, Pass) of
+ case ejabberd_auth:check_password(User, <<"">>, Server, Pass) of
true ->
#{usr => {User, Server, <<"">>}, caller_server => Server};
false ->
{error, invalid_auth}
- end
- catch _:{bad_jid, _} ->
- {error, invalid_auth}
- end;
- {oauth, Token, _} ->
+ end
+ catch _:{bad_jid, _} ->
+ {error, invalid_auth}
+ end;
+ {oauth, Token, _} ->
case ejabberd_oauth:check_token(Token) of
{ok, {U, S}, Scope} ->
#{usr => {U, S, <<"">>}, oauth_scope => Scope, caller_server => S};
{false, Reason} ->
{error, Reason}
- end;
- _ ->
+ end;
+ invalid ->
+ {error, invalid_auth};
+ _ ->
#{}
- end,
+ end,
case Info of
Map when is_map(Map) ->
Tag = proplists:get_value(tag, Opts, <<>>),