Before importing a certificate, free any previous one. Bug 1648
[exim.git] / src / src / tlscert-gnu.c
index dc290b8b7e9abd813c4f318f847a07573ecbab13..40f49d36699dfd21a4d10a941cce65f90bbdc3bd 100644 (file)
@@ -51,10 +51,14 @@ tls_import_cert(const uschar * buf, void ** cert)
 {
 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;
 
-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);