[FFmpeg-cvslog] r20001 - trunk/libavcodec/vorbis_dec.c
michael
subversion
Wed Sep 23 16:19:17 CEST 2009
Author: michael
Date: Wed Sep 23 16:19:17 2009
New Revision: 20001
Log:
Check submap indexes.
10_vorbis_submap_indexes.patch by chrome.
Iam applying this even though reimar had some comments to improve it as it fixes
a serious security issue and i do not want to leave such things unfixed.
Modified:
trunk/libavcodec/vorbis_dec.c
Modified: trunk/libavcodec/vorbis_dec.c
==============================================================================
--- trunk/libavcodec/vorbis_dec.c Wed Sep 23 15:52:56 2009 (r20000)
+++ trunk/libavcodec/vorbis_dec.c Wed Sep 23 16:19:17 2009 (r20001)
@@ -752,9 +752,20 @@ static int vorbis_parse_setup_hdr_mappin
}
for(j=0;j<mapping_setup->submaps;++j) {
+ int bits;
skip_bits(gb, 8); // FIXME check?
- mapping_setup->submap_floor[j]=get_bits(gb, 8);
- mapping_setup->submap_residue[j]=get_bits(gb, 8);
+ bits=get_bits(gb, 8);
+ if (bits>=vc->floor_count) {
+ av_log(vc->avccontext, AV_LOG_ERROR, "submap floor value %d out of range. \n", bits);
+ return -1;
+ }
+ mapping_setup->submap_floor[j]=bits;
+ bits=get_bits(gb, 8);
+ if (bits>=vc->residue_count) {
+ av_log(vc->avccontext, AV_LOG_ERROR, "submap residue value %d out of range. \n", bits);
+ return -1;
+ }
+ mapping_setup->submap_residue[j]=bits;
AV_DEBUG(" %d mapping %d submap : floor %d, residue %d \n", i, j, mapping_setup->submap_floor[j], mapping_setup->submap_residue[j]);
}
More information about the ffmpeg-cvslog
mailing list