# HG changeset patch # User reimar # Date 1215718142 0 # Node ID e2f7de85ebfbf9a4119fd73b8922e92a93c1e090 # Parent aa7edc57c75e47987c39e86f124c0b346af33ee9 Clean up reading of wav extradata. Fixes bug #1135 diff -r aa7edc57c75e -r e2f7de85ebfb libmpdemux/demux_audio.c --- a/libmpdemux/demux_audio.c Thu Jul 10 15:37:06 2008 +0000 +++ b/libmpdemux/demux_audio.c Thu Jul 10 19:29:02 2008 +0000 @@ -391,19 +391,15 @@ sh_audio->i_bps = sh_audio->wf->nAvgBytesPerSec; l -= 16; if (l > 0) { - w->cbSize = stream_read_word_le(s); + w->cbSize = FFMAX(stream_read_word_le(s), 0); l -= 2; - if (w->cbSize > 0) { if (l < w->cbSize) { mp_msg(MSGT_DEMUX,MSGL_ERR,"[demux_audio] truncated extradata (%d < %d)\n", l,w->cbSize); - stream_read(s,(char*)((char*)(w)+sizeof(WAVEFORMATEX)),l); - l = 0; - } else { + l = w->cbSize; + } stream_read(s,(char*)((char*)(w)+sizeof(WAVEFORMATEX)),w->cbSize); l -= w->cbSize; - } - } } if( mp_msg_test(MSGT_DEMUX,MSGL_V) ) print_wave_header(w, MSGL_V);