From 566ee0eaf1543101f7a441cc42e3ddad097363bf Mon Sep 17 00:00:00 2001 From: Shitiz Garg Date: Thu, 15 Dec 2011 14:32:59 +0530 Subject: westwood: Make sure audio header info is present when parsing audio packets Audio header information might get scrambled and would not parse, yet wsqva_read_packet would try to parse audio packets causing segfaults such as floating point exception. Fixes bugzilla #141. Signed-off-by: Martin Storsjö --- libavformat/westwood.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavformat/westwood.c b/libavformat/westwood.c index 67a00c9c33..82b7e94840 100644 --- a/libavformat/westwood.c +++ b/libavformat/westwood.c @@ -326,6 +326,11 @@ static int wsvqa_read_packet(AVFormatContext *s, chunk_size = AV_RB32(&preamble[4]); skip_byte = chunk_size & 0x01; + if ((chunk_type == SND2_TAG || chunk_type == SND1_TAG) && wsvqa->audio_channels == 0) { + av_log(s, AV_LOG_ERROR, "audio chunk without any audio header information found\n"); + return AVERROR_INVALIDDATA; + } + if ((chunk_type == SND1_TAG) || (chunk_type == SND2_TAG) || (chunk_type == VQFR_TAG)) { if (av_new_packet(pkt, chunk_size)) -- cgit v1.2.3