Sanity checks for magnitude and angle.
authorGoogle Chrome <>
Tue, 9 Feb 2010 19:45:16 +0000 (19:45 +0000)
committerReinhard Tartler <siretart@tauware.de>
Tue, 9 Feb 2010 19:45:16 +0000 (19:45 +0000)
26_vorbis_mag_angle_index.patch by chrome

backport r19983 by michael

Originally committed as revision 21723 to svn://svn.ffmpeg.org/ffmpeg/branches/0.5

libavcodec/vorbis_dec.c

index cbde097..305cead 100644 (file)
@@ -702,7 +702,14 @@ static int vorbis_parse_setup_hdr_mappings(vorbis_context *vc) {
             for(j=0;j<mapping_setup->coupling_steps;++j) {
                 mapping_setup->magnitude[j]=get_bits(gb, ilog(vc->audio_channels-1));
                 mapping_setup->angle[j]=get_bits(gb, ilog(vc->audio_channels-1));
-                // FIXME: sanity checks
+                if (mapping_setup->magnitude[j]>=vc->audio_channels) {
+                    av_log(vc->avccontext, AV_LOG_ERROR, "magnitude channel %d out of range. \n", mapping_setup->magnitude[j]);
+                    return 1;
+                }
+                if (mapping_setup->angle[j]>=vc->audio_channels) {
+                    av_log(vc->avccontext, AV_LOG_ERROR, "angle channel %d out of range. \n", mapping_setup->angle[j]);
+                    return 1;
+                }
             }
         } else {
             mapping_setup->coupling_steps=0;