File cyrus-imapd_tls-session-leak.dif of Package cyrus-imapd.3194

Index: cyrus-imapd-2.3.16/imap/tls.c
===================================================================
--- cyrus-imapd-2.3.16.orig/imap/tls.c
+++ cyrus-imapd-2.3.16/imap/tls.c
@@ -714,6 +714,10 @@ int     tls_init_serverengine(const char
     if (!SSL_CTX_set_cipher_list(s_ctx, cipher_list)) {
 	syslog(LOG_ERR,"TLS server engine: cannot load cipher list '%s'",
 	       cipher_list);
+	if ( sess_dbopen && (DB->close)(sessdb) ) {
+	    syslog(LOG_ERR, "DBERROR: error closing tlsdb: %s",
+		   cyrusdb_strerror(r));
+	}
 	return (-1);
     }
 
@@ -731,6 +735,10 @@ int     tls_init_serverengine(const char
 
     if (!set_cert_stuff(s_ctx, s_cert_file, s_key_file)) {
 	syslog(LOG_ERR,"TLS server engine: cannot load cert/key data");
+	if ( sess_dbopen && (DB->close)(sessdb) ) {
+	    syslog(LOG_ERR, "DBERROR: error closing tlsdb: %s",
+		   cyrusdb_strerror(r));
+	}
 	return (-1);
     }
     SSL_CTX_set_tmp_rsa_callback(s_ctx, tmp_rsa_cb);
openSUSE Build Service is sponsored by