From 4302c6bd7bd4cf26cb03ef409122fc04e5af1562 Mon Sep 17 00:00:00 2001
From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
Date: Tue, 3 Nov 2015 10:50:05 -0500
Subject: [PATCH] sips: fix memory leak

This patch fixes a memory leak in SipsIceTransport class.
gnutls_priority_init() allocates memory, no gnutls_priority_deinit()
is called to free it.
This last has been added in SipsIceTransport destructor.
This patch also fixes code rules error on priority_cache_ naming
(this is the variable initialized by gnutls_priority_init).

Change-Id: I32a8a7347d4af96886a0def2d9a6d77fe0fad7c7
Tuleap: #92
---
 src/ringdht/sips_transport_ice.cpp | 6 ++++--
 src/ringdht/sips_transport_ice.h   | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/ringdht/sips_transport_ice.cpp b/src/ringdht/sips_transport_ice.cpp
index 9b1d340d49..b62d3f88aa 100644
--- a/src/ringdht/sips_transport_ice.cpp
+++ b/src/ringdht/sips_transport_ice.cpp
@@ -177,7 +177,7 @@ SipsIceTransport::SipsIceTransport(pjsip_endpoint* endpt,
     if (pjsip_transport_register(base.tpmgr, &base) != PJ_SUCCESS)
         throw std::runtime_error("Can't register PJSIP transport.");
 
-    gnutls_priority_init(&priority_cache,
+    gnutls_priority_init(&priority_cache_,
                          "SECURE192:-VERS-TLS-ALL:+VERS-DTLS-ALL:%SERVER_PRECEDENCE",
                          nullptr);
 
@@ -219,6 +219,8 @@ SipsIceTransport::~SipsIceTransport()
 
     pj_lock_destroy(trData_.base.lock);
     pj_atomic_destroy(trData_.base.ref_cnt);
+
+    gnutls_priority_deinit(priority_cache_);
 }
 
 pj_status_t
@@ -237,7 +239,7 @@ SipsIceTransport::startTlsSession()
     gnutls_session_set_ptr(session_, this);
     gnutls_transport_set_ptr(session_, this);
 
-    gnutls_priority_set(session_, priority_cache);
+    gnutls_priority_set(session_, priority_cache_);
 
     /* Allocate credentials for handshaking and transmission */
     gnutls_certificate_credentials_t certCred;
diff --git a/src/ringdht/sips_transport_ice.h b/src/ringdht/sips_transport_ice.h
index aa4284afed..365d897351 100644
--- a/src/ringdht/sips_transport_ice.h
+++ b/src/ringdht/sips_transport_ice.h
@@ -129,7 +129,7 @@ private:
 
     gnutls_session_t session_ {nullptr};
     std::unique_ptr<gnutls_certificate_credentials_st, decltype(gnutls_certificate_free_credentials)&> xcred_;
-    gnutls_priority_t priority_cache;
+    gnutls_priority_t priority_cache_ {nullptr};
     gnutls_datum_t cookie_key_ {nullptr, 0};
     gnutls_dtls_prestate_st prestate_;
 
-- 
GitLab