comparison vorbis_dec.c @ 10231:e99054a89bfe libavcodec

Check validity of channels & samplerate. This may be security relevant. Based on 2 patches by chrome.
author michael
date Wed, 23 Sep 2009 07:46:51 +0000
parents 38ab367d4231
children 1792a26c0bbb
comparison
equal deleted inserted replaced
10230:afaf58d1e894 10231:e99054a89bfe
846 av_log(vc->avccontext, AV_LOG_ERROR, " Vorbis id header packet corrupt (no vorbis signature). \n"); 846 av_log(vc->avccontext, AV_LOG_ERROR, " Vorbis id header packet corrupt (no vorbis signature). \n");
847 return 1; 847 return 1;
848 } 848 }
849 849
850 vc->version=get_bits_long(gb, 32); //FIXME check 0 850 vc->version=get_bits_long(gb, 32); //FIXME check 0
851 vc->audio_channels=get_bits(gb, 8); //FIXME check >0 851 vc->audio_channels=get_bits(gb, 8);
852 vc->audio_samplerate=get_bits_long(gb, 32); //FIXME check >0 852 if(vc->audio_channels <= 0){
853 av_log(vc->avccontext, AV_LOG_ERROR, "Invalid number of channels\n");
854 return -1;
855 }
856 vc->audio_samplerate=get_bits_long(gb, 32);
857 if(vc->audio_samplerate <= 0){
858 av_log(vc->avccontext, AV_LOG_ERROR, "Invalid samplerate\n");
859 return -1;
860 }
853 vc->bitrate_maximum=get_bits_long(gb, 32); 861 vc->bitrate_maximum=get_bits_long(gb, 32);
854 vc->bitrate_nominal=get_bits_long(gb, 32); 862 vc->bitrate_nominal=get_bits_long(gb, 32);
855 vc->bitrate_minimum=get_bits_long(gb, 32); 863 vc->bitrate_minimum=get_bits_long(gb, 32);
856 bl0=get_bits(gb, 4); 864 bl0=get_bits(gb, 4);
857 bl1=get_bits(gb, 4); 865 bl1=get_bits(gb, 4);