From: Jean-Paul Saman Date: Tue, 12 Feb 2008 11:23:08 +0000 (+0000) Subject: Don't leak memory in error paths X-Git-Tag: 0.9.0-test0~2687 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=0621dd1e676fdd60461059b04aad11207bb39b5a;p=vlc Don't leak memory in error paths --- diff --git a/modules/demux/live555.cpp b/modules/demux/live555.cpp index 6e34b22361..3a0930b812 100644 --- a/modules/demux/live555.cpp +++ b/modules/demux/live555.cpp @@ -309,11 +309,15 @@ static int Open ( vlc_object_t *p_this ) i_sdp_max - i_sdp - 1 ); if( p_demux->b_die || p_demux->b_error ) + { + free( p_sdp ); goto error; + } if( i_read < 0 ) { msg_Err( p_demux, "failed to read SDP" ); + free( p_sdp ); goto error; } @@ -627,6 +631,12 @@ static int SessionsSetup( demux_t *p_demux ) Boolean bInit; live_track_t *tk; + if( p_demux->b_die || p_demux->b_error ) + { + delete iter; + return VLC_EGENERIC; + } + /* Value taken from mplayer */ if( !strcmp( sub->mediumName(), "audio" ) ) i_buffer = 100000; @@ -701,7 +711,11 @@ static int SessionsSetup( demux_t *p_demux ) } tk = (live_track_t*)malloc( sizeof( live_track_t ) ); - if( !tk ) return VLC_ENOMEM; + if( !tk ) + { + delete iter; + return VLC_ENOMEM; + } tk->p_demux = p_demux; tk->sub = sub; tk->p_es = NULL; @@ -714,7 +728,11 @@ static int SessionsSetup( demux_t *p_demux ) tk->i_pts = 0; tk->i_buffer = 65536; tk->p_buffer = (uint8_t *)malloc( 65536 ); - if( !tk->p_buffer ) return VLC_ENOMEM; + if( !tk->p_buffer ) + { + delete iter; + return VLC_ENOMEM; + } /* Value taken from mplayer */ if( !strcmp( sub->mediumName(), "audio" ) )