#include "minify.h" #include "parser3.h" std::pair runStreaming(std::string copy) { MinifyState state; auto c = minifyCallbacks(); parser3::Parser3 parser(&c, &state); for (int i = 0; i < copy.size(); ++i) { auto s = parser.parse(copy.data() + i, 1); if (s != parser3::S_AGAIN) { return {state.result, s}; } } auto s = parser.parse(nullptr, 0); if (s != parser3::S_OK) { return {state.result, s}; } return {state.result, parser3::S_OK}; } std::pair runBatch(std::string copy) { MinifyState state; auto c = minifyCallbacks(); parser3::Parser3 parser(&c, &state); auto s = parser.parse(copy.data(), copy.size()); if (s != parser3::S_AGAIN) { return {state.result, s}; } s = parser.parse(nullptr, 0); if (s != parser3::S_OK) { return {state.result, s}; } return {state.result, parser3::S_OK}; } void testStreaming(std::string const &json) { auto result1 = runStreaming(json); auto result2 = runBatch(json); if (result1 != result2) { abort(); } } extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { testStreaming(std::string((const char *)data, size)); return 0; }