diff --git a/validator/WORKSPACE b/validator/WORKSPACE index 6c84b0df12..71b0c4f670 100644 --- a/validator/WORKSPACE +++ b/validator/WORKSPACE @@ -39,6 +39,13 @@ http_archive( urls = ["https://github.com/google/re2/archive/d826d9fcb68c62996c1b7c0a45d604e22d814952.zip"], ) +http_archive( + name = "com_google_fuzztest", + sha256 = "c75f224b34c3c62ee901381fb743f6326f7b91caae0ceb8fe62f3fd36f187627", + strip_prefix = "fuzztest-58b4e7065924f1a284952b84ea827ce35a87e4dc", + urls = ["https://github.com/google/fuzztest/archive/58b4e7065924f1a284952b84ea827ce35a87e4dc.zip"], +) + # rules_cc defines rules for generating C++ code from Protocol Buffers. http_archive( name = "rules_cc", diff --git a/validator/cpp/htmlparser/BUILD b/validator/cpp/htmlparser/BUILD index 78de292015..84fe1cc250 100644 --- a/validator/cpp/htmlparser/BUILD +++ b/validator/cpp/htmlparser/BUILD @@ -372,6 +372,17 @@ cc_test( ], ) +cc_test( + name = "parser_fuzz_test", + srcs = ["parser_fuzz_test.cc"], + deps = [ + ":parser", + "@com_google_fuzztest//fuzztest", + "@com_google_fuzztest//fuzztest:fuzztest_gtest_main", + "@com_google_googletest//:gtest_main", + ], +) + # Renders a node tree to html string. cc_library( name = "renderer", diff --git a/validator/cpp/htmlparser/parser_fuzz_test.cc b/validator/cpp/htmlparser/parser_fuzz_test.cc new file mode 100644 index 0000000000..2ad7194c22 --- /dev/null +++ b/validator/cpp/htmlparser/parser_fuzz_test.cc @@ -0,0 +1,10 @@ +#include "cpp/htmlparser/parser.h" + +#include "fuzztest/fuzztest.h" + +void FuzzParser(std::string raw_html) { + htmlparser::Parser parser(raw_html); + parser.Parse(); +} + +FUZZ_TEST(CC_FUZZING, FuzzParser);