diff options
Diffstat (limited to 'contrib/ntp/libntp/ssl_init.c')
-rw-r--r-- | contrib/ntp/libntp/ssl_init.c | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/contrib/ntp/libntp/ssl_init.c b/contrib/ntp/libntp/ssl_init.c index ef0f1c1..bebf6e1 100644 --- a/contrib/ntp/libntp/ssl_init.c +++ b/contrib/ntp/libntp/ssl_init.c @@ -13,52 +13,65 @@ #include <lib_strbuf.h> #ifdef OPENSSL +#include "openssl/crypto.h" #include "openssl/err.h" #include "openssl/evp.h" +#include "openssl/opensslv.h" #include "libssl_compat.h" -void atexit_ssl_cleanup(void); - int ssl_init_done; +#if OPENSSL_VERSION_NUMBER < 0x10100000L + +static void +atexit_ssl_cleanup(void) +{ + if (!ssl_init_done) + return; + + ssl_init_done = FALSE; + EVP_cleanup(); + ERR_free_strings(); +} + void ssl_init(void) { init_lib(); - if (ssl_init_done) - return; - - ERR_load_crypto_strings(); - OpenSSL_add_all_algorithms(); - atexit(&atexit_ssl_cleanup); - - ssl_init_done = TRUE; + if ( ! ssl_init_done) { + ERR_load_crypto_strings(); + OpenSSL_add_all_algorithms(); + atexit(&atexit_ssl_cleanup); + ssl_init_done = TRUE; + } } +#else /* OPENSSL_VERSION_NUMBER >= 0x10100000L */ void -atexit_ssl_cleanup(void) +ssl_init(void) { - if (!ssl_init_done) - return; - - ssl_init_done = FALSE; - EVP_cleanup(); - ERR_free_strings(); + init_lib(); + ssl_init_done = TRUE; } +#endif /* OPENSSL_VERSION_NUMBER */ + void ssl_check_version(void) { - if ((SSLeay() ^ OPENSSL_VERSION_NUMBER) & ~0xff0L) { + u_long v; + + v = OpenSSL_version_num(); + if ((v ^ OPENSSL_VERSION_NUMBER) & ~0xff0L) { msyslog(LOG_WARNING, "OpenSSL version mismatch. Built against %lx, you have %lx", - (u_long)OPENSSL_VERSION_NUMBER, SSLeay()); + (u_long)OPENSSL_VERSION_NUMBER, v); fprintf(stderr, "OpenSSL version mismatch. Built against %lx, you have %lx\n", - (u_long)OPENSSL_VERSION_NUMBER, SSLeay()); + (u_long)OPENSSL_VERSION_NUMBER, v); } INIT_SSL(); |