X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Ftlscert-openssl.c;h=0aa65c8861cf3dbee82a676d50c7443f7febffb7;hb=81a559c80ccd6a0354b5485720c0205a69289fb5;hp=46de499cc6fc1ab1b8d57ef266042bdf05249f23;hpb=1f20760b17087817459e6c6baffa28de4b7d5aa2;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/tlscert-openssl.c b/src/src/tlscert-openssl.c index 46de499cc..0aa65c886 100644 --- a/src/src/tlscert-openssl.c +++ b/src/src/tlscert-openssl.c @@ -2,7 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) Jeremy Harris 2014 - 2018 */ +/* Copyright (c) Jeremy Harris 2014 - 2019 */ /* This module provides TLS (aka SSL) support for Exim using the OpenSSL library. It is #included into the tls.c file when that library is used. @@ -17,8 +17,14 @@ library. It is #included into the tls.c file when that library is used. #include #include -#if OPENSSL_VERSION_NUMBER >= 0x10100000L -# define EXIM_HAVE_ASN1_MACROS +#ifdef LIBRESSL_VERSION_NUMBER /* LibreSSL */ +# if LIBRESSL_VERSION_NUMBER >= 0x2090000fL +# define EXIM_HAVE_ASN1_MACROS +# endif +#else /* OpenSSL */ +# if OPENSSL_VERSION_NUMBER >= 0x10100000L +# define EXIM_HAVE_ASN1_MACROS +# endif #endif #if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) @@ -59,7 +65,7 @@ return fail; int tls_import_cert(const uschar * buf, void ** cert) { -void * reset_point = store_get(0); +rmark reset_point = store_mark(); const uschar * cp = string_unprinting(US buf); BIO * bp; X509 * x = *(X509 **)cert; @@ -166,7 +172,7 @@ else /* convert to string in our format */ len = 32; - s = store_get(len); + s = store_get(len, FALSE); strftime(CS s, (size_t)len, "%b %e %T %Y %z", tm_p); } } @@ -330,7 +336,7 @@ M_ASN1_OCTET_STRING_print(bp, adata); /* binary data, DER encoded */ /* just dump for now */ len = BIO_get_mem_data(bp, &cp1); -cp3 = cp2 = store_get(len*3+1); +cp3 = cp2 = store_get(len*3+1, TRUE); while(len) { @@ -497,7 +503,7 @@ if (!X509_digest(cert,fdig,md,&n)) expand_string_message = US"tls_cert_fprt: out of mem\n"; return NULL; } -cp = store_get(n*2+1); +cp = store_get(n*2+1, TRUE); for (int j = 0; j < (int)n; j++) sprintf(CS cp+2*j, "%02X", md[j]); return(cp); }