Commit 2c753633 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont
Browse files

gnutls: fix memory leaks

parent 6c122576
......@@ -499,7 +499,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;
}
/* Sets server's credentials */
val = gnutls_certificate_allocate_credentials (&sys->x509_cred);
......@@ -507,7 +510,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);
......@@ -515,7 +520,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);
......@@ -524,7 +529,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 = {
......@@ -577,6 +582,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;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment