summaryrefslogtreecommitdiff
path: root/json4cpp/tests/src/unit-large_json.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'json4cpp/tests/src/unit-large_json.cpp')
-rw-r--r--json4cpp/tests/src/unit-large_json.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/json4cpp/tests/src/unit-large_json.cpp b/json4cpp/tests/src/unit-large_json.cpp
new file mode 100644
index 0000000000..98d16e3369
--- /dev/null
+++ b/json4cpp/tests/src/unit-large_json.cpp
@@ -0,0 +1,29 @@
+// __ _____ _____ _____
+// __| | __| | | | 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
+
+#include "doctest_compatibility.h"
+
+#include <nlohmann/json.hpp>
+using nlohmann::json;
+
+#include <algorithm>
+
+TEST_CASE("tests on very large JSONs")
+{
+ SECTION("issue #1419 - Segmentation fault (stack overflow) due to unbounded recursion")
+ {
+ const auto depth = 5000000;
+
+ std::string s(static_cast<std::size_t>(2 * depth), '[');
+ std::fill(s.begin() + depth, s.end(), ']');
+
+ json _;
+ CHECK_NOTHROW(_ = nlohmann::json::parse(s));
+ }
+}
+