summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoan Touzet <wohali@users.noreply.github.com>2020-09-10 11:10:24 -0400
committerGitHub <noreply@github.com>2020-09-10 11:10:24 -0400
commita01683a340c539adaf1b9064446e5d184df6f4e8 (patch)
tree65d7a98a88f2bed956d9468f01f201360bc8c6b2
parente0a255ea06b0b90ecffc4fa07eb43c581274bdce (diff)
parente4d577be01bfad2f8e4cf4047efd18391e2c8a31 (diff)
downloadcouchdb-update-fauxton-1.2.6.tar.gz
Merge branch 'master' into update-fauxton-1.2.6update-fauxton-1.2.6
-rw-r--r--src/couch_replicator/src/couch_replicator.erl28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/couch_replicator/src/couch_replicator.erl b/src/couch_replicator/src/couch_replicator.erl
index b38f31b59..b169dccb1 100644
--- a/src/couch_replicator/src/couch_replicator.erl
+++ b/src/couch_replicator/src/couch_replicator.erl
@@ -141,7 +141,11 @@ strip_url_creds(Endpoint) ->
iolist_to_binary(couch_util:url_strip_password(Url))
catch
throw:{error, local_endpoints_not_supported} ->
- Endpoint
+ Endpoint;
+ error:_ ->
+ % Avoid exposing any part of the URL in case there is a password in
+ % the malformed endpoint URL
+ null
end.
@@ -356,7 +360,8 @@ strip_url_creds_test_() ->
[
t_strip_http_basic_creds(),
t_strip_http_props_creds(),
- t_strip_local_db_creds()
+ t_strip_local_db_creds(),
+ t_strip_url_creds_errors()
]
}.
@@ -389,4 +394,23 @@ t_strip_http_props_creds() ->
?assertEqual(<<"http://host/db/">>, strip_url_creds(Props2))
end).
+
+t_strip_url_creds_errors() ->
+ ?_test(begin
+ Bad1 = {[{<<"url">>, <<"http://adm:pass/bad">>}]},
+ ?assertEqual(null, strip_url_creds(Bad1)),
+ Bad2 = {[{<<"garbage">>, <<"more garbage">>}]},
+ ?assertEqual(null, strip_url_creds(Bad2)),
+ Bad3 = <<"http://a:b:c">>,
+ ?assertEqual(null, strip_url_creds(Bad3)),
+ Bad4 = <<"http://adm:pass:pass/bad">>,
+ ?assertEqual(null, strip_url_creds(Bad4)),
+ ?assertEqual(null, strip_url_creds(null)),
+ ?assertEqual(null, strip_url_creds(42)),
+ ?assertEqual(null, strip_url_creds([<<"a">>, <<"b">>])),
+ Bad5 = {[{<<"source_proxy">>, <<"http://adm:pass/bad">>}]},
+ ?assertEqual(null, strip_url_creds(Bad5))
+ end).
+
+
-endif.