From 2164486f5ac8fb0facefecdf17edb99b6e8a04fe Mon Sep 17 00:00:00 2001 From: yasi-blip Date: Wed, 4 Feb 2026 14:54:54 +0800 Subject: [PATCH] Update c-cpp-example/src/advanced_examples/explore_me.cpp in branch Precogs-fix-r0t250i6 --- .../src/advanced_examples/explore_me.cpp | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 c-cpp-example/src/advanced_examples/explore_me.cpp diff --git a/c-cpp-example/src/advanced_examples/explore_me.cpp b/c-cpp-example/src/advanced_examples/explore_me.cpp new file mode 100644 index 0000000..54e8c6a --- /dev/null +++ b/c-cpp-example/src/advanced_examples/explore_me.cpp @@ -0,0 +1,43 @@ +#include <cstring> +#include <zlib.h> +#include <iostream> +#include "explore_me.h" +static long insecureEncrypt(long input); +static void trigger_double_free(); +void ExploreStructuredInputChecks(InputStruct inputStruct){ + if (inputStruct.c == "Attacker") { + if (insecureEncrypt(inputStruct.a) == 0x4e9e91e6677cfff3L) { + if (insecureEncrypt(inputStruct.b) == 0x4f8b9fb34431d9d3L) { + trigger_double_free(); + } + } + } + + return; +} +void ExploreSlowInputsChecks(int a, int b){ + if (a == 48664131) { + for (int i = 0; i < b; i++) { + if (i % 100'000'000 == 0) { + std::cerr << "In loop at position: " + << std::to_string(i) + << " of " + << std::to_string(b) + << std::endl; + } + } + } +} +static long insecureEncrypt(long input) { + long key = 0xefe4eb93215cb6b0L; + return input ^ key; +} +static void trigger_double_free(){ + auto *buffer = static_cast<char *>(malloc(6)); + memcpy(buffer, "hello", 5); + buffer[5] = '\0'; + for (int i = 0; i < 1; i++) { // FIX: Change loop to only free once + free(buffer); + } + buffer = 0; +}