diff options
| author | Leitwolf | 2026-10-24 19:03:40 +0300 |
|---|---|---|
| committer | GitHub | 2026-10-24 19:03:40 +0300 |
| commit | 4f1c759cffcb14bd6511e1d7c5fbace682e24f2d (patch) | |
| tree | 415fe5d48a5b48650bba3747beaf245d727c4f61 /fuzzing/Progmasoft/fuzz_RunnerJson.cpp | |
| parent | 83c6fc3ac13abe83fa39f7b5f8559ccaf4412233 (diff) | |
| parent | 622188f9c08e4af35941c146979883ed4882410e (diff) | |
| download | catch3-4f1c759cffcb14bd6511e1d7c5fbace682e24f2d.tar.gz | |
Merge pull request #15 from Progmasoft/feature/catch3-runner
Replace Catch2's runner with the Catch3 runner
Diffstat (limited to 'fuzzing/Progmasoft/fuzz_RunnerJson.cpp')
| -rw-r--r-- | fuzzing/Progmasoft/fuzz_RunnerJson.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/fuzzing/Progmasoft/fuzz_RunnerJson.cpp b/fuzzing/Progmasoft/fuzz_RunnerJson.cpp new file mode 100644 index 00000000..4cc3770c --- /dev/null +++ b/fuzzing/Progmasoft/fuzz_RunnerJson.cpp @@ -0,0 +1,29 @@ +// Copyright (c) 2026 Progmasoft. +// SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 + +// The runner reads JSON from its workers, from history files and from +// reports; none of them may crash it. A document that parses must also +// print and parse back to the same text. + +#include <Progmasoft/Runner/Json.hpp> + +#include <cstdint> +#include <cstdlib> +#include <string_view> + +extern "C" int +LLVMFuzzerTestOneInput(const std::uint8_t *data, std::size_t size) +{ + const std::string_view text{reinterpret_cast<const char *>(data), size}; + auto parsed = Progmasoft::Catch3::Runner::ParseJson(text); + if (parsed) + { + const auto printed = parsed->ToString(); + auto again = Progmasoft::Catch3::Runner::ParseJson(printed); + if (!again || again->ToString() != printed) + { + std::abort(); + } + } + return 0; +} |