]> git.sesse.net Git - ffmpeg/commitdiff
Add support for building fuzzer tools for an individual demuxer
authorMichael Niedermayer <michael@niedermayer.cc>
Sat, 10 Oct 2020 15:25:46 +0000 (17:25 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Mon, 12 Oct 2020 19:01:48 +0000 (21:01 +0200)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Makefile
tools/Makefile
tools/target_dem_fuzzer.c

index 6a0dabfc5a7d1045d9476a302fbaffc51e08bf4a..c8b548d126d7ad1afb9a83d6de377cdf39cd1b9d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -53,6 +53,9 @@ target_dec_%_fuzzer$(EXESUF): target_dec_%_fuzzer.o $(FF_DEP_LIBS)
 tools/target_bsf_%_fuzzer$(EXESUF): tools/target_bsf_%_fuzzer.o $(FF_DEP_LIBS)
        $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
 
+target_dem_%_fuzzer$(EXESUF): target_dem_%_fuzzer.o $(FF_DEP_LIBS)
+       $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
+
 tools/target_dem_fuzzer$(EXESUF): tools/target_dem_fuzzer.o $(FF_DEP_LIBS)
        $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
 
@@ -63,6 +66,7 @@ tools/sofa2wavs$(EXESUF): ELIBS = $(FF_EXTRALIBS)
 tools/uncoded_frame$(EXESUF): $(FF_DEP_LIBS)
 tools/uncoded_frame$(EXESUF): ELIBS = $(FF_EXTRALIBS)
 tools/target_dec_%_fuzzer$(EXESUF): $(FF_DEP_LIBS)
+tools/target_dem_%_fuzzer$(EXESUF): $(FF_DEP_LIBS)
 
 CONFIGURABLE_COMPONENTS =                                           \
     $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c))                 \
index 88d64ce6d25531d5d98f57b6664338d8018e3832..48fa131eeb38be19f1eae1c3d352f13761cc4b3c 100644 (file)
@@ -8,6 +8,9 @@ tools/target_dec_%_fuzzer.o: tools/target_dec_fuzzer.c
 tools/target_bsf_%_fuzzer.o: tools/target_bsf_fuzzer.c
        $(COMPILE_C) -DFFMPEG_BSF=$*
 
+tools/target_dem_%_fuzzer.o: tools/target_dem_fuzzer.c
+       $(COMPILE_C) -DFFMPEG_DEMUXER=$* -DIO_FLAT=0
+
 tools/target_dem_fuzzer.o: tools/target_dem_fuzzer.c
        $(COMPILE_C) -DIO_FLAT=1
 
index eefb5c5fa39198a7110835e623df9b2e279e365e..79d572a6dc419a4f907aad3d18d09f48f200dac1 100644 (file)
@@ -103,8 +103,15 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
     static int c;
     int seekable = 0;
     int ret;
+    AVInputFormat *fmt = NULL;
 
     if (!c) {
+#ifdef FFMPEG_DEMUXER
+#define DEMUXER_SYMBOL0(DEMUXER) ff_##DEMUXER##_demuxer
+#define DEMUXER_SYMBOL(DEMUXER) DEMUXER_SYMBOL0(DEMUXER)
+        extern AVInputFormat DEMUXER_SYMBOL(FFMPEG_DEMUXER);
+        fmt = &DEMUXER_SYMBOL(FFMPEG_DEMUXER);
+#endif
         av_register_all();
         avcodec_register_all();
         av_log_set_level(AV_LOG_PANIC);
@@ -166,7 +173,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
 
     avfmt->pb = fuzzed_pb;
 
-    ret = avformat_open_input(&avfmt, filename, NULL, NULL);
+    ret = avformat_open_input(&avfmt, filename, fmt, NULL);
     if (ret < 0) {
         av_freep(&fuzzed_pb->buffer);
         av_freep(&fuzzed_pb);