summaryrefslogtreecommitdiff
path: root/usr/src/lib/libipsecutil/common/ipsec_libssl_setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libipsecutil/common/ipsec_libssl_setup.c')
-rw-r--r--usr/src/lib/libipsecutil/common/ipsec_libssl_setup.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/usr/src/lib/libipsecutil/common/ipsec_libssl_setup.c b/usr/src/lib/libipsecutil/common/ipsec_libssl_setup.c
index 91a3d0c787..0e08277e4b 100644
--- a/usr/src/lib/libipsecutil/common/ipsec_libssl_setup.c
+++ b/usr/src/lib/libipsecutil/common/ipsec_libssl_setup.c
@@ -91,6 +91,7 @@ static void (*SSL_load_error_strings_fn)() = NULL;
static void (*ERR_free_strings_fn)() = NULL;
static void (*CRYPTO_set_locking_callback_fn)() = NULL;
static void (*CRYPTO_set_id_callback_fn)() = NULL;
+static void (*OPENSSL_free_fn)() = NULL;
static void solaris_locking_callback(int, int, char *, int);
static unsigned long solaris_thread_id(void);
@@ -155,6 +156,11 @@ libssl_load()
if (CRYPTO_set_id_callback_fn == NULL)
goto libssl_err;
+ OPENSSL_free_fn = (void(*)())dlsym(dldesc,
+ "OPENSSL_free");
+ if (OPENSSL_free_fn == NULL)
+ goto libssl_err;
+
thread_setup();
libssl_loaded = B_TRUE;
@@ -234,6 +240,7 @@ print_asn1_name(FILE *file, const unsigned char *buf, long buflen)
(void) X509_NAME_print_ex_fp_fn(file, x509, 0,
(ASN1_STRFLGS_RFC2253 | ASN1_STRFLGS_ESC_QUOTE |
XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_FN_SN));
+ OPENSSL_free_fn(p);
(void) fprintf(file, "\n");
} else {
char errbuf[80];