[vlc-devel] commit: Check malloc return value and fix a memory leak. ( Rémi Duraffort )

Jean-Paul Saman jean-paul.saman at planet.nl
Wed Mar 12 08:27:50 CET 2008


git version control wrote:
> vlc | branch: master | Rémi Duraffort <ivoire at videolan.org> | Tue Mar 11 20:30:07 2008 +0100| [def276b7faa4b528f6171b7375ab432ee59357a0]
> 
> Check malloc return value and fix a memory leak.

Please use VLC_ENOMEM iso VLC_EGENERIC

Gtz
Jean-Paul Saman.
> 
>> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=def276b7faa4b528f6171b7375ab432ee59357a0
> ---
> 
>  modules/demux/tta.c |   24 +++++++++++++++++++++++-
>  1 files changed, 23 insertions(+), 1 deletions(-)
> 
> diff --git a/modules/demux/tta.c b/modules/demux/tta.c
> index 41ab605..f2dd5d1 100644
> --- a/modules/demux/tta.c
> +++ b/modules/demux/tta.c
> @@ -109,6 +109,8 @@ static int Open( vlc_object_t * p_this )
>      p_demux->pf_demux = Demux;
>      p_demux->pf_control = Control;
>      p_demux->p_sys = p_sys = malloc( sizeof( demux_sys_t ) );
> +    if( !p_sys )
> +        return VLC_EGENERIC;
>  
>      /* Read the metadata */
>      es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 'T', 'T', 'A', '1' ) );
> @@ -125,8 +127,20 @@ static int Open( vlc_object_t * p_this )
>  
>      i_seektable_size = sizeof(uint32_t)*p_sys->i_totalframes;
>      p_seektable = (uint8_t *)malloc( i_seektable_size );
> +    if( !p_seektable )
> +    {
> +        free( p_sys );
> +        return VLC_EGENERIC;
> +    }
> +
>      stream_Read( p_demux->s, p_seektable, i_seektable_size );
> -    p_sys->pi_seektable = (uint32_t *)malloc(i_seektable_size);
> +    p_sys->pi_seektable = (uint32_t *)malloc( i_seektable_size );
> +    if( !p_sys->pi_seektable )
> +    {
> +        free( p_seektable );
> +        free( p_sys );
> +        return VLC_EGENERIC;
> +    }
>  
>      for( i = 0; i < p_sys->i_totalframes; i++ )
>          p_sys->pi_seektable[i] = GetDWLE( &p_seektable[i*4] );
> @@ -136,6 +150,13 @@ static int Open( vlc_object_t * p_this )
>      /* Store the header and Seektable for avcodec */
>      fmt.i_extra = 22 + (p_sys->i_totalframes * 4) + 4;
>      fmt.p_extra = malloc( fmt.i_extra );
> +    if( !fmt.p_extra )
> +    {
> +        free( p_sys->pi_seektable );
> +        free( p_seektable );
> +        free( p_sys );
> +        return VLC_EGENERIC;
> +    }
>      memcpy( (uint8_t*)fmt.p_extra, p_header, 22 );
>      memcpy( (uint8_t*)fmt.p_extra+22, p_seektable, fmt.i_extra -22 );
>  
> @@ -154,6 +175,7 @@ static void Close( vlc_object_t * p_this )
>      demux_t        *p_demux = (demux_t*)p_this;
>      demux_sys_t    *p_sys = p_demux->p_sys;
>  
> +    free( p_sys->pi_seektable );
>      free( p_sys );
>  }
>  
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> http://mailman.videolan.org/listinfo/vlc-devel




More information about the vlc-devel mailing list