aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_pkix.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-12-07 00:29:19 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-12-07 00:29:19 +0300
commit344a2611f2974f6ad0c1e5573f0470c416651b20 (patch)
tree8886ef23ba27f83f97944598a76efee1b0a9ac0d /src/ejabberd_pkix.erl
parentmod_muc_room: Fix typo (diff)
Avoid infinite loop between self-signed certs
Diffstat (limited to 'src/ejabberd_pkix.erl')
-rw-r--r--src/ejabberd_pkix.erl11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/ejabberd_pkix.erl b/src/ejabberd_pkix.erl
index ef25386cd..a67df1288 100644
--- a/src/ejabberd_pkix.erl
+++ b/src/ejabberd_pkix.erl
@@ -689,11 +689,16 @@ get_cert_paths(Certs) ->
end, Certs),
lists:foreach(
fun({Cert1, Cert2}) when Cert1 /= Cert2 ->
- case public_key:pkix_is_issuer(Cert1, Cert2) of
+ case public_key:pkix_is_self_signed(Cert1) of
true ->
- digraph:add_edge(G, Cert1, Cert2);
+ ok;
false ->
- ok
+ case public_key:pkix_is_issuer(Cert1, Cert2) of
+ true ->
+ digraph:add_edge(G, Cert1, Cert2);
+ false ->
+ ok
+ end
end;
(_) ->
ok