vlc/vlc-2.2 | branch: master | Rémi Denis-Courmont <[email protected]> | Sat Aug 23 17:31:17 2014 +0300| [96591ab82c333cc8c6c6782cd8ff986bda85b0f4] | committer: Rémi Denis-Courmont
gnutls: fix memory leaks (cherry picked from commit 2c753633d9bdc0266a831e9979cd5f2c06f31d61) > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=96591ab82c333cc8c6c6782cd8ff986bda85b0f4 --- modules/misc/gnutls.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/misc/gnutls.c b/modules/misc/gnutls.c index 439bca3..6b7272f 100644 --- a/modules/misc/gnutls.c +++ b/modules/misc/gnutls.c @@ -654,7 +654,10 @@ static int OpenServer (vlc_tls_creds_t *crd, const char *cert, const char *key) vlc_tls_creds_sys_t *sys = malloc (sizeof (*sys)); if (unlikely(sys == NULL)) - goto error; + { + gnutls_Deinit (); + return VLC_ENOMEM; + } crd->sys = sys; crd->add_CA = gnutls_AddCA; @@ -670,7 +673,9 @@ static int OpenServer (vlc_tls_creds_t *crd, const char *cert, const char *key) { msg_Err (crd, "cannot allocate credentials: %s", gnutls_strerror (val)); - goto error; + free (sys); + gnutls_Deinit (); + return VLC_ENOMEM; } block_t *certblock = block_FilePath (cert); @@ -678,7 +683,7 @@ static int OpenServer (vlc_tls_creds_t *crd, const char *cert, const char *key) { msg_Err (crd, "cannot read certificate chain from %s: %s", cert, vlc_strerror_c(errno)); - return VLC_EGENERIC; + goto error; } block_t *keyblock = block_FilePath (key); @@ -687,7 +692,7 @@ static int OpenServer (vlc_tls_creds_t *crd, const char *cert, const char *key) msg_Err (crd, "cannot read private key from %s: %s", key, vlc_strerror_c(errno)); block_Release (certblock); - return VLC_EGENERIC; + goto error; } gnutls_datum_t pub = { @@ -735,6 +740,7 @@ static int OpenServer (vlc_tls_creds_t *crd, const char *cert, const char *key) return VLC_SUCCESS; error: + gnutls_certificate_free_credentials (sys->x509_cred); free (sys); gnutls_Deinit (); return VLC_EGENERIC; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
