LibreSSL does not provide the RAND_egd() function.

This patch adds a configure check to allow building mod_ssl with LibreSSL.

Index: modules/ssl/config.m4
===================================================================
--- modules/ssl/config.m4       (revision 1673798)
+++ modules/ssl/config.m4       (working copy)
@@ -44,6 +44,12 @@
            # structure, so ask libtool to hide everything else:
            APR_ADDTO(MOD_SSL_LDADD, [-export-symbols-regex ssl_module])
         fi
+
+        have_rand_egd="no"
+        AC_CHECK_LIB(crypto, RAND_egd, [have_rand_egd="yes"])
+        if test "$have_rand_egd" = "yes"; then
+            AC_DEFINE([HAVE_RAND_EGD], [1], [Define if RAND_egd exists.])
+        fi
     else
         enable_ssl=no
     fi
Index: modules/ssl/ssl_engine_rand.c
===================================================================
--- modules/ssl/ssl_engine_rand.c       (revision 1673798)
+++ modules/ssl/ssl_engine_rand.c       (working copy)
@@ -86,6 +86,7 @@
                 nDone += ssl_rand_feedfp(p, fp, pRandSeed->nBytes);
                 ssl_util_ppclose(s, p, fp);
             }
+#ifdef HAVE_RAND_EGD
             else if (pRandSeed->nSrc == SSL_RSSRC_EGD) {
                 /*
                  * seed in contents provided by the external
@@ -95,6 +96,7 @@
                     continue;
                 nDone += n;
             }
+#endif
             else if (pRandSeed->nSrc == SSL_RSSRC_BUILTIN) {
                 struct {
                     time_t t;

Reply via email to