diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2020-07-19 17:54:10 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2020-09-13 10:40:02 +0200 |
commit | e3af2a07562c020c960f40bee00f9a78a8b9baf8 (patch) | |
tree | 141d640181f858fa7d4e4bf052ee74b73acac317 | |
parent | f5a61a1728cba3fdd19370e8a020063676604efa (diff) | |
download | ffmpeg-e3af2a07562c020c960f40bee00f9a78a8b9baf8.tar.gz |
tools:target_dem_fuzzer: Split into a fuzzer fuzzing at the protocol level and one fuzzing a fixed demuxer input
This should improve coverage and should improve the efficiency of seed files
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | tools/Makefile | 5 | ||||
-rw-r--r-- | tools/target_dem_fuzzer.c | 9 |
3 files changed, 15 insertions, 2 deletions
@@ -56,6 +56,9 @@ tools/target_bsf_%_fuzzer$(EXESUF): tools/target_bsf_%_fuzzer.o $(FF_DEP_LIBS) tools/target_dem_fuzzer$(EXESUF): tools/target_dem_fuzzer.o $(FF_DEP_LIBS) $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) +tools/target_io_dem_fuzzer$(EXESUF): tools/target_io_dem_fuzzer.o $(FF_DEP_LIBS) + $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH) + tools/sofa2wavs$(EXESUF): ELIBS = $(FF_EXTRALIBS) tools/uncoded_frame$(EXESUF): $(FF_DEP_LIBS) tools/uncoded_frame$(EXESUF): ELIBS = $(FF_EXTRALIBS) diff --git a/tools/Makefile b/tools/Makefile index 001093105b..88d64ce6d2 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -9,7 +9,10 @@ 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) + $(COMPILE_C) -DIO_FLAT=1 + +tools/target_io_dem_fuzzer.o: tools/target_dem_fuzzer.c + $(COMPILE_C) -DIO_FLAT=0 OUTDIRS += tools diff --git a/tools/target_dem_fuzzer.c b/tools/target_dem_fuzzer.c index b8356c5aa1..eefb5c5fa3 100644 --- a/tools/target_dem_fuzzer.c +++ b/tools/target_dem_fuzzer.c @@ -76,6 +76,10 @@ static int64_t io_seek(void *opaque, int64_t offset, int whence) } if (offset < 0 || offset > c->filesize) return -1; + if (IO_FLAT) { + c->fuzz += offset - c->pos; + c->fuzz_size -= offset - c->pos; + } c->pos = offset; return 0; } @@ -110,7 +114,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { if (!avfmt) error("Failed avformat_alloc_context()"); - if (size > 2048) { + if (IO_FLAT) { + seekable = 1; + io_buffer_size = size; + } else if (size > 2048) { int flags; char extension[64]; |