tools/target_dec_fuzzer: Use decoder and not codec_id as argument
This allows fuzzing decoders with the same codec_id We also avoid register all to allow the linker to prune unused sections and symbols Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		
							parent
							
								
									3f17751eeb
								
							
						
					
					
						commit
						dec2fa8cc7
					
				| @ -2,7 +2,7 @@ TOOLS = qt-faststart trasher uncoded_frame | |||||||
| TOOLS-$(CONFIG_ZLIB) += cws2fws | TOOLS-$(CONFIG_ZLIB) += cws2fws | ||||||
| 
 | 
 | ||||||
| tools/target_dec_%_fuzzer.o: tools/target_dec_fuzzer.c | tools/target_dec_%_fuzzer.o: tools/target_dec_fuzzer.c | ||||||
| 	$(COMPILE_C) -DFFMPEG_CODEC=AV_CODEC_ID_$* | 	$(COMPILE_C) -DFFMPEG_DECODER=$* | ||||||
| 
 | 
 | ||||||
| OBJDIRS += tools | OBJDIRS += tools | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -66,7 +66,7 @@ static AVCodec *c = NULL; | |||||||
| static AVCodec *AVCodecInitialize(enum AVCodecID codec_id) | static AVCodec *AVCodecInitialize(enum AVCodecID codec_id) | ||||||
| { | { | ||||||
|     AVCodec *res; |     AVCodec *res; | ||||||
|     avcodec_register_all(); | 
 | ||||||
|     av_log_set_level(AV_LOG_PANIC); |     av_log_set_level(AV_LOG_PANIC); | ||||||
|     res = avcodec_find_decoder(codec_id); |     res = avcodec_find_decoder(codec_id); | ||||||
|     if (!res) |     if (!res) | ||||||
| @ -140,8 +140,20 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { | |||||||
|                           int *got_picture_ptr, |                           int *got_picture_ptr, | ||||||
|                           const AVPacket *avpkt) = NULL; |                           const AVPacket *avpkt) = NULL; | ||||||
| 
 | 
 | ||||||
|     if (!c) |     if (!c) { | ||||||
|  | #ifdef FFMPEG_DECODER | ||||||
|  | #define DECODER_SYMBOL0(CODEC) ff_##CODEC##_decoder | ||||||
|  | #define DECODER_SYMBOL(CODEC) DECODER_SYMBOL0(CODEC) | ||||||
|  |         extern AVCodec DECODER_SYMBOL(FFMPEG_DECODER); | ||||||
|  |         avcodec_register(&DECODER_SYMBOL(FFMPEG_DECODER)); | ||||||
|  |         int codec_id = DECODER_SYMBOL(FFMPEG_DECODER).id; | ||||||
|  | 
 | ||||||
|  |         c = AVCodecInitialize(codec_id);  // Done once.
 | ||||||
|  | #else | ||||||
|  |         avcodec_register_all(); | ||||||
|         c = AVCodecInitialize(FFMPEG_CODEC);  // Done once.
 |         c = AVCodecInitialize(FFMPEG_CODEC);  // Done once.
 | ||||||
|  | #endif | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     switch (c->type) { |     switch (c->type) { | ||||||
|     case AVMEDIA_TYPE_AUDIO   : decode_handler = avcodec_decode_audio4; break; |     case AVMEDIA_TYPE_AUDIO   : decode_handler = avcodec_decode_audio4; break; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user