aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Makefile.in5
-rw-r--r--src/configure.ac3
-rw-r--r--src/sha.erl8
-rw-r--r--src/tls/Makefile.in5
-rw-r--r--src/tls/sha_drv.c4
5 files changed, 24 insertions, 1 deletions
diff --git a/src/Makefile.in b/src/Makefile.in
index e026f9562..808137a3c 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -54,6 +54,11 @@ ifeq (@transient_supervisors@, false)
EFLAGS+=-DNO_TRANSIENT_SUPERVISORS
endif
+ifeq (@md2@, true)
+ EFLAGS+=-DHAVE_MD2
+ ERLANG_CFLAGS += -DHAVE_MD2
+endif
+
INSTALL_EPAM=
ifeq (@pam@, pam)
INSTALL_EPAM=install -m 750 $(O_USER) epam $(PBINDIR)
diff --git a/src/configure.ac b/src/configure.ac
index cd8d88b4c..5aa34de24 100644
--- a/src/configure.ac
+++ b/src/configure.ac
@@ -132,6 +132,9 @@ if test "$ENABLEUSER" != ""; then
AC_SUBST([INSTALLUSER], [$ENABLEUSER])
fi
+AC_CHECK_HEADER(openssl/md2.h, md2=true, md2=false)
+AC_SUBST(md2)
+
AC_CANONICAL_SYSTEM
#AC_DEFINE_UNQUOTED(CPU_VENDOR_OS, "$target")
#AC_SUBST(target_os)
diff --git a/src/sha.erl b/src/sha.erl
index 64c15c166..06dd3c2d1 100644
--- a/src/sha.erl
+++ b/src/sha.erl
@@ -28,7 +28,11 @@
-author('alexey@process-one.net').
-export([start/0, sha/1, sha1/1, sha224/1, sha256/1, sha384/1,
- sha512/1, md2/1]).
+ sha512/1]).
+
+-ifdef(HAVE_MD2).
+-export([md2/1]).
+-endif.
-include("ejabberd.hrl").
@@ -80,8 +84,10 @@ sha384(Text) ->
sha512(Text) ->
erlang:port_control(?DRIVER, 512, Text).
+-ifdef(HAVE_MD2).
md2(Text) ->
erlang:port_control(?DRIVER, 2, Text).
+-endif.
driver_path() ->
Suffix = case os:type() of
diff --git a/src/tls/Makefile.in b/src/tls/Makefile.in
index a87da0ea3..5c62dda71 100644
--- a/src/tls/Makefile.in
+++ b/src/tls/Makefile.in
@@ -27,6 +27,11 @@ ifdef debug
EFLAGS+=+debug_info +export_all
endif
+ifeq (@md2@, true)
+ EFLAGS+=-DHAVE_MD2
+ ERLANG_CFLAGS += -DHAVE_MD2
+endif
+
ERLSHLIBS = ../tls_drv.so ../sha_drv.so
OUTDIR = ..
SOURCES = $(wildcard *.erl)
diff --git a/src/tls/sha_drv.c b/src/tls/sha_drv.c
index 13d65803a..8e6de3203 100644
--- a/src/tls/sha_drv.c
+++ b/src/tls/sha_drv.c
@@ -20,7 +20,9 @@
#include <erl_driver.h>
#include <openssl/sha.h>
+#ifdef HAVE_MD2
#include <openssl/md2.h>
+#endif
static ErlDrvData sha_drv_start(ErlDrvPort port, char *buf)
{
@@ -36,11 +38,13 @@ static int sha_drv_control(ErlDrvData handle,
ErlDrvBinary *b = NULL;
switch (command) {
+#ifdef HAVE_MD2
case 2:
rlen = MD2_DIGEST_LENGTH;
b = driver_alloc_binary(rlen);
if (b) MD2((unsigned char*)buf, len, (unsigned char*)b->orig_bytes);
break;
+#endif
case 224:
rlen = SHA224_DIGEST_LENGTH;
b = driver_alloc_binary(rlen);