Commit bbf068ed authored by Rémi Duraffort's avatar Rémi Duraffort

livehttp: fix many memory leaks

parent 14ef6fce
...@@ -308,16 +308,23 @@ static int CryptSetup( sout_access_out_t *p_access, char *key_file ) ...@@ -308,16 +308,23 @@ static int CryptSetup( sout_access_out_t *p_access, char *key_file )
uint8_t key[16]; uint8_t key[16];
char *keyfile = NULL; char *keyfile = NULL;
if( !p_sys->key_uri ) /*No key uri, assume no encryption wanted*/
{
msg_Dbg( p_access, "No key uri, no encryption");
return VLC_SUCCESS;
}
if( key_file ) if( key_file )
keyfile = strdup( key_file ); keyfile = strdup( key_file );
else else
keyfile = var_InheritString( p_access, SOUT_CFG_PREFIX "key-file" ); keyfile = var_InheritString( p_access, SOUT_CFG_PREFIX "key-file" );
if( !p_sys->key_uri ) /*No key uri, assume no encryption wanted*/ if( unlikely(keyfile == NULL) )
{ {
msg_Dbg( p_access, "No key uri, no encryption"); msg_Err( p_access, "No key-file, no encryption" );
return VLC_SUCCESS; return VLC_EGENERIC;
} }
vlc_gcrypt_init(); vlc_gcrypt_init();
/*Setup encryption cipher*/ /*Setup encryption cipher*/
...@@ -326,12 +333,7 @@ static int CryptSetup( sout_access_out_t *p_access, char *key_file ) ...@@ -326,12 +333,7 @@ static int CryptSetup( sout_access_out_t *p_access, char *key_file )
if( err ) if( err )
{ {
msg_Err( p_access, "Openin AES Cipher failed: %s", gpg_strerror(err)); msg_Err( p_access, "Openin AES Cipher failed: %s", gpg_strerror(err));
return VLC_EGENERIC; free( key_file );
}
if( unlikely(keyfile == NULL) )
{
msg_Err( p_access, "No key-file, no encryption" );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
...@@ -340,6 +342,7 @@ static int CryptSetup( sout_access_out_t *p_access, char *key_file ) ...@@ -340,6 +342,7 @@ static int CryptSetup( sout_access_out_t *p_access, char *key_file )
{ {
msg_Err( p_access, "Unable to open keyfile %s: %m", keyfile ); msg_Err( p_access, "Unable to open keyfile %s: %m", keyfile );
free( keyfile ); free( keyfile );
gcry_cipher_close( p_sys->aes_ctx );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
free( keyfile ); free( keyfile );
...@@ -350,6 +353,7 @@ static int CryptSetup( sout_access_out_t *p_access, char *key_file ) ...@@ -350,6 +353,7 @@ static int CryptSetup( sout_access_out_t *p_access, char *key_file )
if( keylen < 16 ) if( keylen < 16 )
{ {
msg_Err( p_access, "No key at least 16 octects (you provided %zd), no encryption", keylen ); msg_Err( p_access, "No key at least 16 octects (you provided %zd), no encryption", keylen );
gcry_cipher_close( p_sys->aes_ctx );
return VLC_EGENERIC; return VLC_EGENERIC;
} }
...@@ -357,7 +361,7 @@ static int CryptSetup( sout_access_out_t *p_access, char *key_file ) ...@@ -357,7 +361,7 @@ static int CryptSetup( sout_access_out_t *p_access, char *key_file )
if(err) if(err)
{ {
msg_Err(p_access, "Setting AES key failed: %s", gpg_strerror(err)); msg_Err(p_access, "Setting AES key failed: %s", gpg_strerror(err));
gcry_cipher_close( p_sys->aes_ctx); gcry_cipher_close( p_sys->aes_ctx );
return VLC_EGENERIC; 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