| AUTOMAKE_OPTIONS = -Wno-syntax |
| EXTRA_PROGRAMS = genSeed html regexp schema uri xml xpath |
| check_PROGRAMS = testFuzzer |
| EXTRA_DIST = html.dict regexp.dict schema.dict xml.dict xpath.dict \ |
| seed/uri seed/regexp fuzz.h |
| CLEANFILES = $(EXTRA_PROGRAMS) |
| AM_CPPFLAGS = -I$(top_srcdir)/include |
| DEPENDENCIES = $(top_builddir)/libxml2.la |
| LDADD = $(STATIC_BINARIES) $(top_builddir)/libxml2.la $(THREAD_LIBS) $(Z_LIBS) $(LZMA_LIBS) $(ICONV_LIBS) $(M_LIBS) $(WIN32_EXTRA_LIBADD) |
| |
| XML_MAX_LEN = 80000 |
| # Single quotes to avoid wildcard expansion by the shell |
| XML_SEED_CORPUS_SRC = \ |
| '$(top_srcdir)/test/*' \ |
| '$(top_srcdir)/test/errors/*.xml' \ |
| '$(top_srcdir)/test/errors10/*.xml' \ |
| '$(top_srcdir)/test/namespaces/*' \ |
| '$(top_srcdir)/test/valid/*.xml' \ |
| '$(top_srcdir)/test/VC/*' \ |
| '$(top_srcdir)/test/VCM/*' \ |
| '$(top_srcdir)/test/XInclude/docs/*' \ |
| '$(top_srcdir)/test/xmlid/*' |
| |
| testFuzzer_SOURCES = testFuzzer.c fuzz.c |
| |
| .PHONY: tests corpus clean-corpus |
| |
| corpus: seed/html.stamp seed/schema.stamp seed/xml.stamp seed/xpath.stamp |
| |
| tests: testFuzzer$(EXEEXT) corpus |
| @echo "## Running fuzzer tests" |
| @./testFuzzer$(EXEEXT) |
| |
| clean-corpus: |
| rm -rf seed/html.stamp seed/html |
| rm -rf seed/schema.stamp seed/schema |
| rm -rf seed/xml.stamp seed/xml |
| rm -rf seed/xpath.stamp seed/xpath |
| |
| # Seed corpus |
| |
| genSeed_SOURCES = genSeed.c fuzz.c |
| |
| # XML fuzzer |
| |
| seed/xml.stamp: genSeed$(EXEEXT) |
| @mkdir -p seed/xml |
| @./genSeed$(EXEEXT) xml $(XML_SEED_CORPUS_SRC) |
| @touch seed/xml.stamp |
| |
| xml_SOURCES = xml.c fuzz.c |
| xml_LDFLAGS = -fsanitize=fuzzer |
| |
| fuzz-xml: xml$(EXEEXT) seed/xml.stamp |
| @mkdir -p corpus/xml |
| ./xml$(EXEEXT) \ |
| -dict=xml.dict \ |
| -max_len=$(XML_MAX_LEN) \ |
| -timeout=20 \ |
| corpus/xml seed/xml |
| |
| # HTML fuzzer |
| |
| seed/html.stamp: genSeed$(EXEEXT) |
| @mkdir -p seed/html |
| @./genSeed$(EXEEXT) html '$(top_srcdir)/test/HTML/*' |
| @touch seed/html.stamp |
| |
| html_SOURCES = html.c fuzz.c |
| html_LDFLAGS = -fsanitize=fuzzer |
| |
| fuzz-html: html$(EXEEXT) seed/html.stamp |
| @mkdir -p corpus/html |
| ./html$(EXEEXT) \ |
| -dict=html.dict \ |
| -max_len=1000000 \ |
| -timeout=10 \ |
| corpus/html seed/html |
| |
| # Regexp fuzzer |
| |
| regexp_SOURCES = regexp.c fuzz.c |
| regexp_LDFLAGS = -fsanitize=fuzzer |
| |
| fuzz-regexp: regexp$(EXEEXT) |
| @mkdir -p corpus/regexp |
| ./regexp$(EXEEXT) \ |
| -dict=regexp.dict \ |
| -max_len=200 \ |
| -timeout=5 \ |
| corpus/regexp $(srcdir)/seed/regexp |
| |
| # URI fuzzer |
| |
| uri_SOURCES = uri.c fuzz.c |
| uri_LDFLAGS = -fsanitize=fuzzer |
| |
| fuzz-uri: uri$(EXEEXT) |
| @mkdir -p corpus/uri |
| ./uri$(EXEEXT) \ |
| -max_len=10000 \ |
| -timeout=2 \ |
| corpus/uri $(srcdir)/seed/uri |
| |
| # XML Schema fuzzer |
| |
| seed/schema.stamp: genSeed$(EXEEXT) |
| @mkdir -p seed/schema |
| @./genSeed$(EXEEXT) schema '$(top_srcdir)/test/schemas/*.xsd' |
| @touch seed/schema.stamp |
| |
| schema_SOURCES = schema.c fuzz.c |
| schema_LDFLAGS = -fsanitize=fuzzer |
| |
| fuzz-schema: schema$(EXEEXT) seed/schema.stamp |
| @mkdir -p corpus/schema |
| ./schema$(EXEEXT) \ |
| -dict=schema.dict \ |
| -max_len=$(XML_MAX_LEN) \ |
| -timeout=20 \ |
| corpus/schema seed/schema |
| |
| # XPath fuzzer |
| |
| seed/xpath.stamp: genSeed$(EXEEXT) |
| @mkdir -p seed/xpath |
| @./genSeed$(EXEEXT) xpath "$(top_builddir)/test/XPath" |
| @touch seed/xpath.stamp |
| |
| xpath_SOURCES = xpath.c fuzz.c |
| xpath_LDFLAGS = -fsanitize=fuzzer |
| |
| fuzz-xpath: xpath$(EXEEXT) seed/xpath.stamp |
| @mkdir -p corpus/xpath |
| ./xpath$(EXEEXT) \ |
| -dict=xpath.dict \ |
| -max_len=10000 \ |
| -timeout=20 \ |
| corpus/xpath seed/xpath |
| |