projects
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix support of $spam_ variables at delivery time. Bug 1647
[exim.git]
/
src
/
src
/
tlscert-gnu.c
diff --git
a/src/src/tlscert-gnu.c
b/src/src/tlscert-gnu.c
index dc290b8b7e9abd813c4f318f847a07573ecbab13..69ce27fc81db405b10edabf555966abe5f7081ea 100644
(file)
--- a/
src/src/tlscert-gnu.c
+++ b/
src/src/tlscert-gnu.c
@@
-51,10
+51,14
@@
tls_import_cert(const uschar * buf, void ** cert)
{
void * reset_point = store_get(0);
gnutls_datum_t datum;
{
void * reset_point = store_get(0);
gnutls_datum_t datum;
-gnutls_x509_crt_t crt;
+gnutls_x509_crt_t crt
= *(gnutls_x509_crt_t *)cert
;
int fail = 0;
int fail = 0;
-gnutls_global_init();
+if (crt)
+ gnutls_x509_crt_deinit(crt);
+else
+ gnutls_global_init();
+
gnutls_x509_crt_init(&crt);
datum.data = string_unprinting(US buf);
gnutls_x509_crt_init(&crt);
datum.data = string_unprinting(US buf);
@@
-73,10
+77,15
@@
return fail;
}
void
}
void
-tls_free_cert(void * cert)
+tls_free_cert(void *
*
cert)
{
{
-gnutls_x509_crt_deinit((gnutls_x509_crt_t) cert);
-gnutls_global_deinit();
+gnutls_x509_crt_t crt = *(gnutls_x509_crt_t *)cert;
+if (crt)
+ {
+ gnutls_x509_crt_deinit(crt);
+ gnutls_global_deinit();
+ *cert = NULL;
+ }
}
/*****************************************************
}
/*****************************************************