MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / LLVMFuzzerTestOneInput

Function LLVMFuzzerTestOneInput

tools/target_dec_fuzzer.c:174–648  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

172}
173
174int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
175 uint64_t maxpixels_per_frame = 4096 * 4096;
176 uint64_t maxpixels;
177
178 uint64_t maxsamples_per_frame = 256*1024*32;
179 uint64_t maxsamples;
180 const uint64_t fuzz_tag = FUZZ_TAG;
181 const uint8_t *last = data;
182 const uint8_t *end = data + size;
183 uint32_t it = 0;
184 uint64_t ec_pixels = 0;
185 uint64_t nb_samples = 0;
186 int (*decode_handler)(AVCodecContext *avctx, AVFrame *picture,
187 int *got_picture_ptr,
188 const AVPacket *avpkt) = NULL;
189 AVCodecParserContext *parser = NULL;
190 uint64_t keyframes = 0;
191 uint64_t flushpattern = -1;
192 AVDictionary *opts = NULL;
193
194 if (!c) {
195#ifdef FFMPEG_DECODER
196#define DECODER_SYMBOL0(CODEC) ff_##CODEC##_decoder
197#define DECODER_SYMBOL(CODEC) DECODER_SYMBOL0(CODEC)
198 extern FFCodec DECODER_SYMBOL(FFMPEG_DECODER);
199 codec_list[0] = &DECODER_SYMBOL(FFMPEG_DECODER);
200
201 c = &DECODER_SYMBOL(FFMPEG_DECODER);
202#else
203 c = AVCodecInitialize(FFMPEG_CODEC); // Done once.
204#endif
205 av_log_set_level(AV_LOG_PANIC);
206 }
207
208 switch (c->p.type) {
209 case AVMEDIA_TYPE_AUDIO :
210 case AVMEDIA_TYPE_VIDEO : decode_handler = audio_video_handler ; break;
211 case AVMEDIA_TYPE_SUBTITLE: decode_handler = subtitle_handler ; break;
212 }
213 switch (c->p.id) {
214 case AV_CODEC_ID_APE: maxsamples_per_frame /= 256; break;
215 }
216 maxpixels = maxpixels_per_frame * maxiteration;
217 maxsamples = maxsamples_per_frame * maxiteration;
218 switch (c->p.id) {
219 case AV_CODEC_ID_AASC: maxpixels /= 1024; break;
220 case AV_CODEC_ID_AGM: maxpixels /= 1024; break;
221 case AV_CODEC_ID_ANM: maxpixels /= 1024; break;
222 case AV_CODEC_ID_APE: maxsamples /= 16384; break;
223 case AV_CODEC_ID_ARBC: maxpixels /= 1024; break;
224 case AV_CODEC_ID_ARGO: maxpixels /= 1024; break;
225 case AV_CODEC_ID_BETHSOFTVID: maxpixels /= 8192; break;
226 case AV_CODEC_ID_BFI: maxpixels /= 8192; break;
227 case AV_CODEC_ID_BINKVIDEO: maxpixels /= 32; break;
228 case AV_CODEC_ID_BONK: maxsamples /= 1<<20; break;
229 case AV_CODEC_ID_CAVS: maxpixels /= 1024; break;
230 case AV_CODEC_ID_CDTOONS: maxpixels /= 1024; break;
231 case AV_CODEC_ID_CFHD: maxpixels /= 16384; break;

Callers

nothing calls this directly

Calls 15

AVCodecInitializeFunction · 0.85
av_log_set_levelFunction · 0.85
av_dict_set_intFunction · 0.85
avcodec_alloc_context3Function · 0.85
bytestream2_initFunction · 0.85
av_parser_initFunction · 0.85
av_force_cpu_flagsFunction · 0.85
av_strlcatfFunction · 0.85
av_dict_setFunction · 0.85
av_image_check_sizeFunction · 0.85
avcodec_open2Function · 0.85
avcodec_free_contextFunction · 0.85

Tested by

no test coverage detected