summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorrtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-03-15 19:40:52 +0000
committerrtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-03-15 19:40:52 +0000
commitc95b78ac8d3874906423333442a3171a2acd55b2 (patch)
tree0f1af328667469281137990c5b3c05205439c956 /libmpdemux
parent7ff65cb40a6f784ed5349f8fe6039a90b9027160 (diff)
downloadmpv-c95b78ac8d3874906423333442a3171a2acd55b2.tar.bz2
mpv-c95b78ac8d3874906423333442a3171a2acd55b2.tar.xz
Same behaviour as old code for short headers
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9597 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_audio.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libmpdemux/demux_audio.c b/libmpdemux/demux_audio.c
index 2a9f8d8dfb..ed4ed2b33c 100644
--- a/libmpdemux/demux_audio.c
+++ b/libmpdemux/demux_audio.c
@@ -158,7 +158,7 @@ int demux_audio_open(demuxer_t* demuxer) {
WAVEFORMATEX* w;
int l;
l = stream_read_dword_le(s);
- if(l < sizeof(WAVEFORMATEX)) {
+ if(l < 16) {
mp_msg(MSGT_DEMUX,MSGL_ERR,"[demux_audio] Bad wav header length: too short (%d)!!!\n",l);
free_sh_audio(sh_audio);
return 0;
@@ -170,8 +170,10 @@ int demux_audio_open(demuxer_t* demuxer) {
w->nAvgBytesPerSec = stream_read_dword_le(s);
w->nBlockAlign = stream_read_word_le(s);
w->wBitsPerSample = sh_audio->samplesize = stream_read_word_le(s);
+ l -= 16;
+ if (l > 0) {
w->cbSize = stream_read_word_le(s);
- l -= sizeof(WAVEFORMATEX);
+ l -= 2;
if (w->cbSize > 0)
if (l < w->cbSize) {
mp_msg(MSGT_DEMUX,MSGL_ERR,"[demux_audio] truncated extradata (%d < %d)\n",
@@ -182,6 +184,7 @@ int demux_audio_open(demuxer_t* demuxer) {
stream_read(s,(char*)((char*)(w)+sizeof(WAVEFORMATEX)),w->cbSize);
l -= w->cbSize;
}
+ }
if(verbose>0) print_wave_header(w);
if(l)