]> granicus.if.org Git - ejabberd/commitdiff
Shut up dialyzer/xref if public_key:short_name_hash/1 is not available
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Sat, 13 May 2017 10:11:08 +0000 (13:11 +0300)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Sat, 13 May 2017 10:11:08 +0000 (13:11 +0300)
rebar.config
rebar.config.script
src/ejabberd_pkix.erl

index 7def98c7951fc7b8809b77b863a8b718706c3a77..b2f6ab4d77caab6dbcbb96fe05432f6d323d374a 100644 (file)
@@ -90,6 +90,7 @@
             {if_var_true, erlang_deprecated_types, {d, 'ERL_DEPRECATED_TYPES'}},
            {if_version_above, "18", {d, 'STRONG_RAND_BYTES'}},
            {if_version_above, "17", {d, 'GB_SETS_ITERATOR_FROM'}},
+           {if_have_fun, {public_key, short_name_hash, 1}, {d, 'SHORT_NAME_HASH'}},
             {if_var_true, hipe, native},
             {src_dirs, [asn1, src,
                         {if_var_true, tools, tools},
index 19142b9eec2b80038eada82d73cf91150a4e9fb9..d2ee31213244ed073f45c736edfa996f4031ca84 100644 (file)
@@ -141,6 +141,15 @@ ProcessVars = fun(_F, [], Acc) ->
                          _ ->
                              F(F, Tail, Acc)
                      end;
+                (F, [{if_have_fun, MFA, Value} | Tail], Acc) ->
+                     {Mod, Fun, Arity} = MFA,
+                     code:ensure_loaded(Mod),
+                     case erlang:function_exported(Mod, Fun, Arity) of
+                         true ->
+                             F(F, Tail, ProcessSingleVar(F, Value, Acc));
+                         false ->
+                             F(F, Tail, Acc)
+                     end;
                 (F, [Other1 | Tail1], Acc) ->
                      F(F, Tail1, [F(F, Other1, []) | Acc]);
                 (F, Val, Acc) when is_tuple(Val) ->
index f99a2c12ec732fab0c247740bf35256f6994255f..7c03f17724351034cbf8a96948e5530944d0794a 100644 (file)
@@ -393,7 +393,7 @@ check_ca_dir() ->
 -spec find_local_issuer(cert()) -> {ok, cert()} | {error, {bad_cert, unknown_ca}}.
 find_local_issuer(Cert) ->
     {ok, {_, IssuerID}} = public_key:pkix_issuer_id(Cert, self),
-    Hash = public_key:short_name_hash(IssuerID),
+    Hash = short_name_hash(IssuerID),
     filelib:fold_files(
       ca_dir(), Hash ++ "\\.[0-9]+", false,
       fun(_, {ok, IssuerCert}) ->
@@ -514,3 +514,11 @@ get_cert_path(G, [Root|_] = Acc) ->
                      get_cert_path(G, [V|Acc])
              end, Es)
     end.
+
+-ifdef(SHORT_NAME_HASH).
+short_name_hash(IssuerID) ->
+    public_key:short_name_hash(IssuerID).
+-else.
+short_name_hash(_) ->
+    "".
+-endif.