diff options
| author | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-02 18:42:50 +0300 |
|---|---|---|
| committer | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-02 18:42:50 +0300 |
| commit | 5fad10f89c485cfdc7b99011f07609f8871160d4 (patch) | |
| tree | 1860b39753b652dfe54d3cbbc80c875f40198d1f /json4cpp/tests/src/fuzzer-driver_afl.cpp | |
| parent | 292baed7ac0cf84263263966ed32ed113cae857f (diff) | |
| parent | 9a737481aed085fd289f82dff1fa8c3c66627a7e (diff) | |
| download | Project-Tick-5fad10f89c485cfdc7b99011f07609f8871160d4.tar.gz Project-Tick-5fad10f89c485cfdc7b99011f07609f8871160d4.zip | |
Add 'json4cpp/' from commit '9a737481aed085fd289f82dff1fa8c3c66627a7e'
git-subtree-dir: json4cpp
git-subtree-mainline: 292baed7ac0cf84263263966ed32ed113cae857f
git-subtree-split: 9a737481aed085fd289f82dff1fa8c3c66627a7e
Diffstat (limited to 'json4cpp/tests/src/fuzzer-driver_afl.cpp')
| -rw-r--r-- | json4cpp/tests/src/fuzzer-driver_afl.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/json4cpp/tests/src/fuzzer-driver_afl.cpp b/json4cpp/tests/src/fuzzer-driver_afl.cpp new file mode 100644 index 0000000000..1cde49bd8a --- /dev/null +++ b/json4cpp/tests/src/fuzzer-driver_afl.cpp @@ -0,0 +1,39 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ (supporting code) +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2026 Niels Lohmann <https://nlohmann.me> +// SPDX-License-Identifier: MIT + +/* +This file implements a driver for American Fuzzy Lop (afl-fuzz). It relies on +an implementation of the `LLVMFuzzerTestOneInput` function which processes a +passed byte array. +*/ + +#include <vector> // for vector +#include <cstdint> // for uint8_t +#include <iostream> // for cin + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size); + +int main() +{ +#ifdef __AFL_HAVE_MANUAL_CONTROL + while (__AFL_LOOP(1000)) + { +#endif + // copy stdin to byte vector + std::vector<uint8_t> vec; + char c = 0; + while (std::cin.get(c)) + { + vec.push_back(static_cast<uint8_t>(c)); + } + + LLVMFuzzerTestOneInput(vec.data(), vec.size()); +#ifdef __AFL_HAVE_MANUAL_CONTROL + } +#endif +} |
