diff --git a/daemon/src/sip/tlsvalidation.c b/daemon/src/sip/tlsvalidation.c
index 8800ed81c049feebeed33429a6aa4e9162c1d79e..3306f0b23b7e8a8b9a46efcca0e2e093716f6f73 100644
--- a/daemon/src/sip/tlsvalidation.c
+++ b/daemon/src/sip/tlsvalidation.c
@@ -293,13 +293,16 @@ int containsPrivateKey(const char *pemPath)
     err = gnutls_global_init();
     if (err != GNUTLS_E_SUCCESS) {
         ERROR("Could not init GnuTLS - %s", gnutls_strerror(err));
-        goto out;
+        free(dt.data);
+        return res;
     }
 
     err = gnutls_x509_privkey_init(&key);
     if (err != GNUTLS_E_SUCCESS) {
         ERROR("Could not init key - %s", gnutls_strerror(err));
-        goto out;
+        free(dt.data);
+        gnutls_global_deinit();
+        return res;
     }
 
     err = gnutls_x509_privkey_import(key, &dt, GNUTLS_X509_FMT_PEM);