[vlc-devel] [PATCH 3/4] directsound: fix a possible data read beyond the end of a buffer

Denis Charmet typx at dinauz.org
Sat Jul 20 14:07:15 CEST 2013


Hi,

Le samedi 20 juillet 2013 à 01:50:51, Ludovic Fauvet a écrit :
> @@ -714,9 +714,13 @@ static int FillBuffer( audio_output_t *p_aout, block_t *p_buffer )
>                                   p_sys->chans_to_reorder, p_sys->chan_table,
>                                   p_sys->format );
>  
> -        memcpy( p_write_position, p_buffer->p_buffer, l_bytes1 );
> +        i_size = ( p_buffer->i_buffer < l_bytes1 ) ? p_buffer->i_buffer : l_bytes1;
> +        memcpy( p_write_position, p_buffer->p_buffer, i_size );
>          if( l_bytes1 < p_buffer->i_buffer)
> -            memcpy(p_wrap_around, p_buffer->p_buffer + l_bytes1, l_bytes2);
> +        {
> +            i_size = ( p_buffer->i_buffer - l_bytes1 < l_bytes2 ) ? p_buffer->i_buffer - l_bytes1 : l_bytes2;
> +            memcpy( p_wrap_around, p_buffer->p_buffer + l_bytes1, i_size );
> +        }
>          block_Release( p_buffer );
>

I don't think it's useful. The whole point of the dwBytes arg of
IDirectSoundBuffer_Lock is to avoid that l_bytes1 + l_bytes2 > dwBytes.

Regards,

-- 
Denis Charmet - TypX
Le mauvais esprit est un art de vivre



More information about the vlc-devel mailing list