add fuzzing targets for use with LLVM libFuzzer
cover add fuzzing targets for use with LLVM libFuzzer
libFuzzer[1] is a fuzzing engine included in recent versions of LLVM. It is used by OSS-Fuzz[2] for continuous fuzzing of OSS projects.
This series adds two basic fuzzing targets covering packfile header and index code. It is not particularly portable, and requires the use of LLVM v4.0 (the latest version available on my workstation). I would particularly appreciate advice on how to make the Makefile more portable.
[1]: https://llvm.org/docs/LibFuzzer.html
[2]: https://github.com/google/oss-fuzz
Josh Steadmon (2):
fuzz: Add basic fuzz testing target.
fuzz: Add fuzz testing for packfile indices.
.gitignore | 3 +++ Makefile | 33 ++++++++++++++++++++++++++++++++- fuzz-pack-headers.c | 14 ++++++++++++++ fuzz-pack-idx.c | 13 +++++++++++++ packfile.c | 44 +++++++++++++++++++++++++------------------- packfile.h | 13 +++++++++++++ 6 files changed, 100 insertions(+), 20 deletions(-) create mode 100644 fuzz-pack-headers.c create mode 100644 fuzz-pack-idx.c
Signature · 1 line
2.19.0.605.g01d371f741-goog
RFC PATCH 1/2 fuzz: Add basic fuzz testing target.
--- .gitignore | 2 ++ Makefile | 30 +++++++++++++++++++++++++++++- fuzz-pack-headers.c | 14 ++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 fuzz-pack-headers.c
.gitignore +2 -0
@@ -1,3 +1,5 @@ +/fuzz_corpora +/fuzz-pack-headers /GIT-BUILD-OPTIONS /GIT-CFLAGS /GIT-LDFLAGS
Makefile +29 -1
@@ -590,6 +590,8 @@ XDIFF_OBJS = VCSSVN_OBJS = GENERATED_H = EXTRA_CPPFLAGS = +FUZZ_OBJS = +FUZZ_PROGRAMS = LIB_OBJS = PROGRAM_OBJS = PROGRAMS =
@@ -682,6 +684,10 @@ SCRIPTS = $(SCRIPT_SH_INS) \ ETAGS_TARGET = TAGS +FUZZ_OBJS += fuzz-pack-headers.o + +FUZZ_PROGRAMS += $(patsubst %.o,%,$(FUZZ_OBJS)) + # Empty... EXTRA_PROGRAMS =
@@ -2250,6 +2256,7 @@ TEST_OBJS := $(patsubst %$X,%.o,$(TEST_PROGRAMS)) $(patsubst %,t/helper/%,$(TEST OBJECTS := $(LIB_OBJS) $(BUILTIN_OBJS) $(PROGRAM_OBJS) $(TEST_OBJS) \ $(XDIFF_OBJS) \ $(VCSSVN_OBJS) \ + $(FUZZ_OBJS) \ common-main.o \ git.o ifndef NO_CURL
@@ -2931,7 +2938,7 @@ profile-clean: cocciclean: $(RM) contrib/coccinelle/*.cocci.patch* -clean: profile-clean coverage-clean cocciclean +clean: profile-clean coverage-clean cocciclean fuzz-clean $(RM) *.res $(RM) $(OBJECTS) $(RM) $(LIB_FILE) $(XDIFF_LIB) $(VCSSVN_LIB)
@@ -3061,3 +3068,24 @@ cover_db: coverage-report cover_db_html: cover_db cover -report html -outputdir cover_db_html cover_db + +### Fuzz testing +# +.PHONY: fuzz-clean fuzz-objs fuzz-compile + +FUZZ_CFLAGS = $(CFLAGS) -fsanitize-coverage=trace-pc-guard -fsanitize=address +FUZZ_LDFLAGS = $(FUZZ_CFLAGS) + + +fuzz-clean: + $(RM) $(FUZZ_PROGRAMS) $(FUZZ_OBJS) + +fuzz-objs: $(FUZZ_OBJS) + +fuzz-compile: + $(MAKE) CC=clang LD=clang CFLAGS="$(FUZZ_CFLAGS)" \ + LDFLAGS="$(FUZZ_LDFLAGS)" all fuzz-objs + +$(FUZZ_PROGRAMS): fuzz-compile + clang++ $(FUZZ_LDFLAGS) $(LIB_OBJS) $(BUILTIN_OBJS) $(XDIFF_OBJS) \ + $(EXTLIBS) git.o [email protected] /usr/lib/llvm-4.0/lib/libFuzzer.a -o $@
fuzz-pack-headers.c new file +14 -0
@@ -0,0 +1,14 @@ +#include "packfile.h" + +int LLVMFuzzerTestOneInput (const uint8_t *data,size_t size); + +int LLVMFuzzerTestOneInput (const uint8_t *data,size_t size) +{ +enum object_type type; +unsigned long len; + +unpack_object_header_buffer ((const unsigned char *)data, + (unsigned long )size, &type, &len); + +return 0 ; +}
Signature · 1 line
2.19.0.605.g01d371f741-goog
Re: [RFC PATCH 1/2] fuzz: Add basic fuzz testing target.
Makefile SCRIPTS = $(SCRIPT_SH_INS) \
Quoted 8 lines · Josh Steadmon
Makefile +7
-0+FUZZ_OBJS += fuzz-pack-headers.o + +FUZZ_PROGRAMS += $(patsubst %.o,%,$(FUZZ_OBJS)) + +### Fuzz testing +# +.PHONY: fuzz-clean fuzz-objs fuzz-compile
I take it that you anticipate the fuzz programs in the future all be named fuzz-$(blah), whose source is fuzz-$(blah).o (even though we may grow some common code that may be linked with them, which can be done by tweaking the rule for the $(FUZZ_PROGRAMS) target). Am I reading you correctly? Would fuzz-{clean,objs,compile} risk squatting on nicer names we may want to use for $(blah) down the line?
Makefile cover_db: coverage-report · line 3091
Quoted 4 lines
+ ...
+$(FUZZ_PROGRAMS): fuzz-compileMakefile +2
-0+ clang++ $(FUZZ_LDFLAGS) $(LIB_OBJS) $(BUILTIN_OBJS) $(XDIFF_OBJS) \ + $(EXTLIBS) git.o [email protected] /usr/lib/llvm-4.0/lib/libFuzzer.a -o $@
Is the expected usage pattern to know a single fuzz-* program the builder wants to build, to run "make fuzz-pack-headers"? If not, it also would be a good idea to have something like
fuzz-build-all:: $(FUZZ_PROGRAMS)
.PHONY: fuzz-build-allperhaps?
Also, in the final version we unleash to general developer audience, we'd want to support "make V=1" (and "make" that is "$(QUIET)").
Re: [RFC PATCH 1/2] fuzz: Add basic fuzz testing target.
Quoted 17 lines · Junio C Hamano
Makefile SCRIPTS = $(SCRIPT_SH_INS) \
Quoted 8 lines · Josh Steadmon
Makefile +7
-0+FUZZ_OBJS += fuzz-pack-headers.o + +FUZZ_PROGRAMS += $(patsubst %.o,%,$(FUZZ_OBJS)) + +### Fuzz testing +# +.PHONY: fuzz-clean fuzz-objs fuzz-compileI take it that you anticipate the fuzz programs in the future all be named fuzz-$(blah), whose source is fuzz-$(blah).o (even though we may grow some common code that may be linked with them, which can be done by tweaking the rule for the $(FUZZ_PROGRAMS) target). Am I reading you correctly? Would fuzz-{clean,objs,compile} risk squatting on nicer names we may want to use for $(blah) down the line?
Yes, that's correct. I've reworked the rules to be more compatible with how OSS-Fuzz expects to build these targets, and now "fuzz-all" is the only remaining special target.
Quoted 9 lines
Makefile cover_db: coverage-report · line 3091
Quoted 4 lines
+ ...
+$(FUZZ_PROGRAMS): fuzz-compileMakefile +2
-0+ clang++ $(FUZZ_LDFLAGS) $(LIB_OBJS) $(BUILTIN_OBJS) $(XDIFF_OBJS) \ + $(EXTLIBS) git.o [email protected] /usr/lib/llvm-4.0/lib/libFuzzer.a -o $@Is the expected usage pattern to know a single fuzz-* program the builder wants to build, to run "make fuzz-pack-headers"? If not, it also would be a good idea to have something like
Quoted 7 lines
fuzz-build-all:: $(FUZZ_PROGRAMS) .PHONY: fuzz-build-allperhaps?
Also, in the final version we unleash to general developer audience, we'd want to support "make V=1" (and "make" that is "$(QUIET)").
Done and done.
RFC PATCH 2/2 fuzz: Add fuzz testing for packfile indices.
In reply to Josh Steadmon--- .gitignore | 1 + Makefile | 5 ++++- fuzz-pack-idx.c | 13 +++++++++++++ packfile.c | 44 +++++++++++++++++++++++++------------------- packfile.h | 13 +++++++++++++ 5 files changed, 56 insertions(+), 20 deletions(-) create mode 100644 fuzz-pack-idx.c
.gitignore +1 -0
@@ -1,5 +1,6 @@ /fuzz_corpora /fuzz-pack-headers +/fuzz-pack-idx /GIT-BUILD-OPTIONS /GIT-CFLAGS /GIT-LDFLAGS
Makefile +4 -1
@@ -685,6 +685,7 @@ SCRIPTS = $(SCRIPT_SH_INS) \ ETAGS_TARGET = TAGS FUZZ_OBJS += fuzz-pack-headers.o +FUZZ_OBJS += fuzz-pack-idx.o FUZZ_PROGRAMS += $(patsubst %.o,%,$(FUZZ_OBJS))
@@ -3071,7 +3072,7 @@ cover_db_html: cover_db ### Fuzz testing # -.PHONY: fuzz-clean fuzz-objs fuzz-compile +.PHONY: fuzz-clean fuzz-objs fuzz-compile fuzz-all FUZZ_CFLAGS = $(CFLAGS) -fsanitize-coverage=trace-pc-guard -fsanitize=address FUZZ_LDFLAGS = $(FUZZ_CFLAGS)
@@ -3089,3 +3090,5 @@ fuzz-compile: $(FUZZ_PROGRAMS): fuzz-compile clang++ $(FUZZ_LDFLAGS) $(LIB_OBJS) $(BUILTIN_OBJS) $(XDIFF_OBJS) \ $(EXTLIBS) git.o [email protected] /usr/lib/llvm-4.0/lib/libFuzzer.a -o $@ + +fuzz-all: $(FUZZ_PROGRAMS)
fuzz-pack-idx.c new file +13 -0
@@ -0,0 +1,13 @@ +#include "object-store.h" +#include "packfile.h" + +int LLVMFuzzerTestOneInput (const uint8_t *data,size_t size); + +int LLVMFuzzerTestOneInput (const uint8_t *data,size_t size) +{ +struct packed_git p; + +load_idx ("fuzz-input" ,GIT_SHA1_RAWSZ , (void *)data, size, &p); + +return 0 ; +}
packfile.c +25 -19
91 lines not on this page · raw message
packfile.h +13 -0
@@ -164,4 +164,17 @@ extern int has_pack_index(const unsigned char *sha1);*/ extern int is_promisor_object (const struct object_id *oid); +/* +* Expose a function for fuzz testing. +* +* load_idx() parses a block of memory as a packfile index and puts the results +* into a struct packed_git. +* +* This function should not be used directly. It is exposed here only so that we +* have a convenient entry-point for fuzz testing. For real uses, you should +* probably use open_pack_index() or parse_pack_index() instead. +*/ +extern int load_idx (const char *path,const unsigned int hashsz,void *idx_map, +size_t idx_size,struct packed_git *p); +#endif
Signature · 1 line
2.19.0.605.g01d371f741-goog
Re: [RFC PATCH 2/2] fuzz: Add fuzz testing for packfile indices.
Makefile fuzz-compile: · line 3094
Quoted 9 lines · Josh Steadmon
### Fuzz testing
#
-.PHONY: fuzz-clean fuzz-objs fuzz-compile
+.PHONY: fuzz-clean fuzz-objs fuzz-compile fuzz-all
...
FUZZ_CFLAGS= $(CFLAGS) -fsanitize-coverage=trace-pc-guard -fsanitize=address
...Makefile +2
-0+ +fuzz-all: $(FUZZ_PROGRAMS)
I guess I read your mind ;-) Please do this in 1/2 instead of adding it at 2/2 as "oops, we'd need it more and more as we add these".
v2 cover add fuzzing targets for use with OSS-Fuzz
In reply to Josh SteadmonFrom: Josh Steadmon <[email protected]>
V2 of this series pulls the compiler flags out of the Makefile, to be provided by the user depending on the combination of compiler and fuzzing engine in use. This also makes it more compatible with OSS-Fuzz's build process.
Josh Steadmon (2):
fuzz: Add basic fuzz testing target.
fuzz: Add fuzz testing for packfile indices.
.gitignore | 3 +++ Makefile | 33 +++++++++++++++++++++++++++++++++ fuzz-pack-headers.c | 14 ++++++++++++++ fuzz-pack-idx.c | 13 +++++++++++++ packfile.c | 44 +++++++++++++++++++++++++------------------- packfile.h | 13 +++++++++++++ 6 files changed, 101 insertions(+), 19 deletions(-) create mode 100644 fuzz-pack-headers.c create mode 100644 fuzz-pack-idx.c
Range-diff against v1:
1: 9456c41798 ! 1: 446d8081b1 fuzz: Add basic fuzz testing target.
@@ -32,6 +32,9 @@
+FUZZ_OBJS += fuzz-pack-headers.o
+
++# Always build fuzz objects even if not testing, to prevent bit-rot.
++all:: $(FUZZ_OBJS)
++
+FUZZ_PROGRAMS += $(patsubst %.o,%,$(FUZZ_OBJS))
+
# Empty...
@@ -46,14 +49,13 @@
git.o
ifndef NO_CURL
@@
- cocciclean:
- $(RM) contrib/coccinelle/*.cocci.patch*
-
--clean: profile-clean coverage-clean cocciclean
-+clean: profile-clean coverage-clean cocciclean fuzz-clean
- $(RM) *.res
- $(RM) $(OBJECTS)
$(RM) $(LIB_FILE) $(XDIFF_LIB) $(VCSSVN_LIB)
+ $(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git$X
+ $(RM) $(TEST_PROGRAMS) $(NO_INSTALL)
++ $(RM) $(FUZZ_PROGRAMS)
+ $(RM) -r bin-wrappers $(dep_dirs)
+ $(RM) -r po/build/
+ $(RM) *.pyc *.pyo */*.pyc */*.pyo command-list.h $(ETAGS_TARGET) tags cscope*
@@
cover_db_html: cover_db
cover -report html -outputdir cover_db_html cover_db
@@ -61,24 +63,24 @@
+
+### Fuzz testing
+#
-+.PHONY: fuzz-clean fuzz-objs fuzz-compile
-+
-+FUZZ_CFLAGS = $(CFLAGS) -fsanitize-coverage=trace-pc-guard -fsanitize=address
-+FUZZ_LDFLAGS = $(FUZZ_CFLAGS)
-+
-+
-+fuzz-clean:
-+ $(RM) $(FUZZ_PROGRAMS) $(FUZZ_OBJS)
-+
-+fuzz-objs: $(FUZZ_OBJS)
++# Building fuzz targets generally requires a special set of compiler flags that
++# are not necessarily appropriate for general builds, and that vary greatly
++# depending on the compiler version used.
++#
++# An example command to build against libFuzzer from LLVM 4.0.0:
++#
++# make CC=clang CXX=clang++ \
++# CFLAGS="-fsanitize-coverage=trace-pc-guard -fsanitize=address" \
++# LIB_FUZZING_ENGINE=/usr/lib/llvm-4.0/lib/libFuzzer.a \
++# fuzz-all
++#
++.PHONY: fuzz-all
+
-+fuzz-compile:
-+ $(MAKE) CC=clang LD=clang CFLAGS="$(FUZZ_CFLAGS)" \
-+ LDFLAGS="$(FUZZ_LDFLAGS)" all fuzz-objs
++$(FUZZ_PROGRAMS): all
++ $(QUIET_LINK)$(CXX) $(CFLAGS) $(LIB_OBJS) $(BUILTIN_OBJS) \
++ $(XDIFF_OBJS) $(EXTLIBS) git.o [email protected] $(LIB_FUZZING_ENGINE) -o $@
+
-+$(FUZZ_PROGRAMS): fuzz-compile
-+ clang++ $(FUZZ_LDFLAGS) $(LIB_OBJS) $(BUILTIN_OBJS) $(XDIFF_OBJS) \
-+ $(EXTLIBS) git.o [email protected] /usr/lib/llvm-4.0/lib/libFuzzer.a -o $@
++fuzz-all: $(FUZZ_PROGRAMS)
diff --git a/fuzz-pack-headers.c b/fuzz-pack-headers.c
new file mode 1006442: 581eb8f817 ! 2: c7b5a03d81 fuzz: Add fuzz testing for packfile indices.
@@ -24,23 +24,8 @@
FUZZ_OBJS += fuzz-pack-headers.o
+FUZZ_OBJS += fuzz-pack-idx.o
- FUZZ_PROGRAMS += $(patsubst %.o,%,$(FUZZ_OBJS))
-
-@@
-
- ### Fuzz testing
- #
--.PHONY: fuzz-clean fuzz-objs fuzz-compile
-+.PHONY: fuzz-clean fuzz-objs fuzz-compile fuzz-all
-
- FUZZ_CFLAGS = $(CFLAGS) -fsanitize-coverage=trace-pc-guard -fsanitize=address
- FUZZ_LDFLAGS = $(FUZZ_CFLAGS)
-@@
- $(FUZZ_PROGRAMS): fuzz-compile
- clang++ $(FUZZ_LDFLAGS) $(LIB_OBJS) $(BUILTIN_OBJS) $(XDIFF_OBJS) \
- $(EXTLIBS) git.o [email protected] /usr/lib/llvm-4.0/lib/libFuzzer.a -o $@
-+
-+fuzz-all: $(FUZZ_PROGRAMS)
+ # Always build fuzz objects even if not testing, to prevent bit-rot.
+ all:: $(FUZZ_OBJS)
diff --git a/fuzz-pack-idx.c b/fuzz-pack-idx.c new file mode 100644
Signature · 1 line
2.19.0.605.g01d371f741-goog
PATCH v2 1/2 fuzz: Add basic fuzz testing target.
From: Josh Steadmon <[email protected]>
fuzz-pack-headers.c provides a fuzzing entry point compatible with libFuzzer (and possibly other fuzzing engines).
--- .gitignore | 2 ++ Makefile | 32 ++++++++++++++++++++++++++++++++ fuzz-pack-headers.c | 14 ++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 fuzz-pack-headers.c
.gitignore +2 -0
@@ -1,3 +1,5 @@ +/fuzz_corpora +/fuzz-pack-headers /GIT-BUILD-OPTIONS /GIT-CFLAGS /GIT-LDFLAGS
Makefile +32 -0
@@ -590,6 +590,8 @@ XDIFF_OBJS = VCSSVN_OBJS = GENERATED_H = EXTRA_CPPFLAGS = +FUZZ_OBJS = +FUZZ_PROGRAMS = LIB_OBJS = PROGRAM_OBJS = PROGRAMS =
@@ -682,6 +684,13 @@ SCRIPTS = $(SCRIPT_SH_INS) \ ETAGS_TARGET = TAGS +FUZZ_OBJS += fuzz-pack-headers.o + +# Always build fuzz objects even if not testing, to prevent bit-rot. +all:: $(FUZZ_OBJS) + +FUZZ_PROGRAMS += $(patsubst %.o,%,$(FUZZ_OBJS)) + # Empty... EXTRA_PROGRAMS =
@@ -2250,6 +2259,7 @@ TEST_OBJS := $(patsubst %$X,%.o,$(TEST_PROGRAMS)) $(patsubst %,t/helper/%,$(TEST OBJECTS := $(LIB_OBJS) $(BUILTIN_OBJS) $(PROGRAM_OBJS) $(TEST_OBJS) \ $(XDIFF_OBJS) \ $(VCSSVN_OBJS) \ + $(FUZZ_OBJS) \ common-main.o \ git.o ifndef NO_CURL
@@ -2937,6 +2947,7 @@ clean: profile-clean coverage-clean cocciclean $(RM) $(LIB_FILE) $(XDIFF_LIB) $(VCSSVN_LIB) $(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git$X $(RM) $(TEST_PROGRAMS) $(NO_INSTALL) + $(RM) $(FUZZ_PROGRAMS) $(RM) -r bin-wrappers $(dep_dirs) $(RM) -r po/build/ $(RM) *.pyc *.pyo */*.pyc */*.pyo command-list.h $(ETAGS_TARGET) tags cscope*
@@ -3061,3 +3072,24 @@ cover_db: coverage-report cover_db_html: cover_db cover -report html -outputdir cover_db_html cover_db + +### Fuzz testing +# +# Building fuzz targets generally requires a special set of compiler flags that +# are not necessarily appropriate for general builds, and that vary greatly +# depending on the compiler version used. +# +# An example command to build against libFuzzer from LLVM 4.0.0: +# +# make CC=clang CXX=clang++ \ +# CFLAGS="-fsanitize-coverage=trace-pc-guard -fsanitize=address" \ +# LIB_FUZZING_ENGINE=/usr/lib/llvm-4.0/lib/libFuzzer.a \ +# fuzz-all +# +.PHONY: fuzz-all + +$(FUZZ_PROGRAMS): all + $(QUIET_LINK)$(CXX) $(CFLAGS) $(LIB_OBJS) $(BUILTIN_OBJS) \ + $(XDIFF_OBJS) $(EXTLIBS) git.o [email protected] $(LIB_FUZZING_ENGINE) -o $@ + +fuzz-all: $(FUZZ_PROGRAMS)
fuzz-pack-headers.c new file +14 -0
@@ -0,0 +1,14 @@ +#include "packfile.h" + +int LLVMFuzzerTestOneInput (const uint8_t *data,size_t size); + +int LLVMFuzzerTestOneInput (const uint8_t *data,size_t size) +{ +enum object_type type; +unsigned long len; + +unpack_object_header_buffer ((const unsigned char *)data, + (unsigned long )size, &type, &len); + +return 0 ; +}
Signature · 1 line
2.19.0.605.g01d371f741-goog
PATCH v2 2/2 fuzz: Add fuzz testing for packfile indices.
In reply to [email protected]From: Josh Steadmon <[email protected]>
Breaks the majority of check_packed_git_idx() into a separate function, load_idx(). The latter function operates on arbitrary buffers, which makes it suitable as a fuzzing test target.
--- .gitignore | 1 + Makefile | 1 + fuzz-pack-idx.c | 13 +++++++++++++ packfile.c | 44 +++++++++++++++++++++++++------------------- packfile.h | 13 +++++++++++++ 5 files changed, 53 insertions(+), 19 deletions(-) create mode 100644 fuzz-pack-idx.c
.gitignore +1 -0
@@ -1,5 +1,6 @@ /fuzz_corpora /fuzz-pack-headers +/fuzz-pack-idx /GIT-BUILD-OPTIONS /GIT-CFLAGS /GIT-LDFLAGS
Makefile +1 -0
@@ -685,6 +685,7 @@ SCRIPTS = $(SCRIPT_SH_INS) \ ETAGS_TARGET = TAGS FUZZ_OBJS += fuzz-pack-headers.o +FUZZ_OBJS += fuzz-pack-idx.o # Always build fuzz objects even if not testing, to prevent bit-rot. all:: $(FUZZ_OBJS)
fuzz-pack-idx.c new file +13 -0
@@ -0,0 +1,13 @@ +#include "object-store.h" +#include "packfile.h" + +int LLVMFuzzerTestOneInput (const uint8_t *data,size_t size); + +int LLVMFuzzerTestOneInput (const uint8_t *data,size_t size) +{ +struct packed_git p; + +load_idx ("fuzz-input" ,GIT_SHA1_RAWSZ , (void *)data, size, &p); + +return 0 ; +}
packfile.c +25 -19
91 lines not on this page · raw message
packfile.h +13 -0
@@ -164,4 +164,17 @@ extern int has_pack_index(const unsigned char *sha1);*/ extern int is_promisor_object (const struct object_id *oid); +/* +* Expose a function for fuzz testing. +* +* load_idx() parses a block of memory as a packfile index and puts the results +* into a struct packed_git. +* +* This function should not be used directly. It is exposed here only so that we +* have a convenient entry-point for fuzz testing. For real uses, you should +* probably use open_pack_index() or parse_pack_index() instead. +*/ +extern int load_idx (const char *path,const unsigned int hashsz,void *idx_map, +size_t idx_size,struct packed_git *p); +#endif
Signature · 1 line
2.19.0.605.g01d371f741-goog
Re: [PATCH v2 0/2] add fuzzing targets for use with OSS-Fuzz
In reply to [email protected]Quoted 6 lines · [email protected] writes:
From: Josh Steadmon <[email protected]>
V2 of this series pulls the compiler flags out of the
Makefile, to be provided by the user depending on the combination of compiler and fuzzing engine in use. This also makes it more compatible with OSS-Fuzz's build process.
Thanks, will replace. I think we can merge this to 'next' and down and build incrementally on top.