+++ /dev/null
-From 867e8fe25dbfb1e31493488ad695bde55b890397 Mon Sep 17 00:00:00 2001
-From: "Heiko Schlittermann (HS12-RIPE)" <hs@schlittermann.de>
-Date: Wed, 23 Nov 2016 12:02:26 +0100
-Subject: [PATCH] Fix memory leak on (Gnu)TLS close.
-
-This leak doesn't show up under normal operation, as the process
-normally dies right after closing the session.
-
-But during callout repetitive TLS sessions are opened and closed from
-the same process (the process receiving the message). Depending on
-the amount of RAM and the number of callouts the same process does,
-this may be a problem. (On an amd64 machine with 4GB RAM, at about 1000
-recipients the memory is exhausted.)
-
-(cherry picked from commit ed62aae3051c9a713d35c8ae516fbd193d1401ba)
----
- src/tls-gnu.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/tls-gnu.c b/src/tls-gnu.c
-index 61ed0e81..670f8cbc 100644
---- a/src/tls-gnu.c
-+++ b/src/tls-gnu.c
-@@ -1729,6 +1729,7 @@ if (rc != GNUTLS_E_SUCCESS)
-
- if (!sigalrm_seen)
- {
-+ gnutls_certificate_free_credentials(state->x509_cred);
- (void)fclose(smtp_out);
- (void)fclose(smtp_in);
- }
-@@ -2014,6 +2015,8 @@ if (shutdown)
- }
-
- gnutls_deinit(state->session);
-+gnutls_certificate_free_credentials(state->x509_cred);
-+
-
- state->tlsp->active = -1;
- memcpy(state, &exim_gnutls_state_init, sizeof(exim_gnutls_state_init));
-@@ -2074,6 +2077,8 @@ if (state->xfer_buffer_lwm >= state->xfer_buffer_hwm)
- receive_smtp_buffered = smtp_buffered;
-
- gnutls_deinit(state->session);
-+ gnutls_certificate_free_credentials(state->x509_cred);
-+
- state->session = NULL;
- state->tlsp->active = -1;
- state->tlsp->bits = 0;
---
-2.11.0
-