diff --git a/test/src/fuzzer-driver_afl.cpp b/test/src/fuzzer-driver_afl.cpp index e386033a..eddeae41 100644 --- a/test/src/fuzzer-driver_afl.cpp +++ b/test/src/fuzzer-driver_afl.cpp @@ -11,9 +11,9 @@ passed byte array. Licensed under the MIT License <http://opensource.org/licenses/MIT>. */ -#include <sstream> -#include <cstdint> -#include <iostream> +#include <vector> // for vector +#include <cstdint> // for uint8_t +#include <iostream> // for cin extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size); @@ -23,10 +23,15 @@ int main() while (__AFL_LOOP(1000)) { #endif - // copy stdin to stringstream to pass it to fuzzer as byte array - std::stringstream ss; - ss << std::cin.rdbuf(); - LLVMFuzzerTestOneInput(reinterpret_cast<const uint8_t*>(ss.str().c_str()), ss.str().size()); + // copy stdin to byte vector + std::vector<uint8_t> vec; + char c; + while (std::cin.get(c)) + { + vec.push_back(static_cast<uint8_t>(c)); + } + + LLVMFuzzerTestOneInput(vec.data(), vec.size()); #ifdef __AFL_HAVE_MANUAL_CONTROL } #endif