summaryrefslogtreecommitdiff
path: root/tomlplusplus/fuzzing/toml_fuzzer.cpp
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:44:05 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:44:05 +0300
commit0b24459ac12b6cf9fd5a401d647796ca254a8fa8 (patch)
treef2fd66e2476976a51e2a51330fd95dc6e87b24c1 /tomlplusplus/fuzzing/toml_fuzzer.cpp
parentb85e90fc3480da0e6a48da73201a0b22488cc650 (diff)
parent1c8b7466e4946fcc3bf20484c0e1d001202cca5a (diff)
downloadProject-Tick-0b24459ac12b6cf9fd5a401d647796ca254a8fa8.tar.gz
Project-Tick-0b24459ac12b6cf9fd5a401d647796ca254a8fa8.zip
Add 'tomlplusplus/' from commit '1c8b7466e4946fcc3bf20484c0e1d001202cca5a'
git-subtree-dir: tomlplusplus git-subtree-mainline: b85e90fc3480da0e6a48da73201a0b22488cc650 git-subtree-split: 1c8b7466e4946fcc3bf20484c0e1d001202cca5a
Diffstat (limited to 'tomlplusplus/fuzzing/toml_fuzzer.cpp')
-rw-r--r--tomlplusplus/fuzzing/toml_fuzzer.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/tomlplusplus/fuzzing/toml_fuzzer.cpp b/tomlplusplus/fuzzing/toml_fuzzer.cpp
new file mode 100644
index 0000000000..2b657f0fec
--- /dev/null
+++ b/tomlplusplus/fuzzing/toml_fuzzer.cpp
@@ -0,0 +1,41 @@
+#include <cstdint>
+#include <fuzzer/FuzzedDataProvider.h>
+
+#include <toml++/toml.hpp>
+
+enum class SerializationTest
+{
+ NONE = 0,
+ JSON,
+ YAML,
+ TOML,
+ kMaxValue = TOML
+};
+
+extern "C" int LLVMFuzzerTestOneInput(const std::uint8_t* data, const std::size_t size)
+{
+ FuzzedDataProvider fdp{data, size};
+ try
+ {
+ const toml::table tbl = toml::parse(fdp.ConsumeRandomLengthString());
+
+ switch (fdp.ConsumeEnum<SerializationTest>())
+ {
+ case SerializationTest::JSON:
+ static_cast<void>(toml::json_formatter{tbl});
+ break;
+ case SerializationTest::YAML:
+ static_cast<void>(toml::yaml_formatter{tbl});
+ break;
+ case SerializationTest::TOML:
+ static_cast<void>(toml::toml_formatter{tbl});
+ default:
+ break;
+ }
+ }
+ catch (const toml::parse_error&)
+ {
+ return -1;
+ }
+ return 0;
+}