vorbisdec: avoid invalid memory access
authorAaron Colwell <acolwell@chromium.org>
Wed, 7 Mar 2012 22:51:00 +0000 (14:51 -0800)
committerRonald S. Bultje <rsbultje@gmail.com>
Thu, 8 Mar 2012 19:52:33 +0000 (11:52 -0800)
This fixes some invalid memory access caused later in the function
by res_chan[] not being set for all channels. This happens when a
channel doesn't appear a submap. This change simply returns a
decoder error when this situation is detected.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
libavcodec/vorbisdec.c

index 0d491c8..4a7d609 100644 (file)
@@ -1581,6 +1581,9 @@ static int vorbis_parse_audio_packet(vorbis_context *vc)
         ch_left -= ch;
     }
 
+    if (ch_left > 0)
+        return AVERROR_INVALIDDATA;
+
 // Inverse coupling
 
     for (i = mapping->coupling_steps - 1; i >= 0; --i) { //warning: i has to be signed