diff --git a/fuzz/CMakeLists.txt b/fuzz/CMakeLists.txt index 0a1956072..4ecf39e63 100644 --- a/fuzz/CMakeLists.txt +++ b/fuzz/CMakeLists.txt @@ -30,7 +30,8 @@ if (ENABLE_FUZZING) COMMENT "Fuzzing ${binary}" VERBATIM) endmacro () - set(targets + + set(ServerTargets "match_parameters" "nearest_parameters" "route_parameters" @@ -40,8 +41,18 @@ if (ENABLE_FUZZING) "url_parser" "request_parser") - foreach (target ${targets}) - add_fuzz_target(${target}) + foreach (target ${ServerTargets}) + add_fuzz_target(${target}) endforeach () + + set(UtilTargets + "escape_json" + "uri_decode") + + foreach (target ${UtilTargets}) + add_fuzz_target(${target}) + endforeach () + + endif () diff --git a/fuzz/escape_json.cc b/fuzz/escape_json.cc new file mode 100644 index 000000000..5f5fdc81c --- /dev/null +++ b/fuzz/escape_json.cc @@ -0,0 +1,18 @@ +#include "util/string_util.hpp" + +#include "util.hpp" + +#include +#include + +using osrm::util::escape_JSON; + +extern "C" int LLVMFuzzerTestOneInput(const unsigned char *data, unsigned long size) +{ + const std::string in(reinterpret_cast(data), size); + + const auto escaped = escape_JSON(in); + escape(escaped.data()); + + return 0; +} diff --git a/fuzz/uri_decode.cc b/fuzz/uri_decode.cc new file mode 100644 index 000000000..a25bb4e92 --- /dev/null +++ b/fuzz/uri_decode.cc @@ -0,0 +1,21 @@ +#include "server/api/url_parser.hpp" +#include "util/string_util.hpp" + +#include "util.hpp" + +#include +#include + +using osrm::util::URIDecode; + +extern "C" int LLVMFuzzerTestOneInput(const unsigned char *data, unsigned long size) +{ + const std::string in(reinterpret_cast(data), size); + std::string out; + + (void)URIDecode(in, out); + + escape(out.data()); + + return 0; +}