From 484c14af8182ac5af3acabb50daed9a2c5ea186d Mon Sep 17 00:00:00 2001 From: Bhargava Shastry Date: Fri, 5 Apr 2019 14:06:19 +0200 Subject: [PATCH] Increase upper bound for number of interpreted steps for optimized code --- test/tools/ossfuzz/strictasm_diff_ossfuzz.cpp | 11 +++++++++-- test/tools/ossfuzz/yulFuzzerCommon.cpp | 13 ++++++++++--- test/tools/ossfuzz/yulFuzzerCommon.h | 11 ++++++++++- test/tools/ossfuzz/yulProto_diff_ossfuzz.cpp | 10 ++++++++-- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/test/tools/ossfuzz/strictasm_diff_ossfuzz.cpp b/test/tools/ossfuzz/strictasm_diff_ossfuzz.cpp index b7d01acb1..5f62e4c97 100644 --- a/test/tools/ossfuzz/strictasm_diff_ossfuzz.cpp +++ b/test/tools/ossfuzz/strictasm_diff_ossfuzz.cpp @@ -78,7 +78,10 @@ extern "C" int LLVMFuzzerTestOneInput(uint8_t const* _data, size_t _size) ostringstream os2; try { - yulFuzzerUtil::interpret(os1, stack.parserResult()->code); + yulFuzzerUtil::interpret( + os1, + stack.parserResult()->code + ); } catch (yul::test::StepLimitReached const&) { @@ -91,7 +94,11 @@ extern "C" int LLVMFuzzerTestOneInput(uint8_t const* _data, size_t _size) stack.optimize(); try { - yulFuzzerUtil::interpret(os2, stack.parserResult()->code); + yulFuzzerUtil::interpret( + os2, + stack.parserResult()->code, + (yul::test::yul_fuzzer::yulFuzzerUtil::maxSteps * 1.5) + ); } catch (yul::test::InterpreterTerminatedGeneric const&) { diff --git a/test/tools/ossfuzz/yulFuzzerCommon.cpp b/test/tools/ossfuzz/yulFuzzerCommon.cpp index 8edb7c276..1a69d99ba 100644 --- a/test/tools/ossfuzz/yulFuzzerCommon.cpp +++ b/test/tools/ossfuzz/yulFuzzerCommon.cpp @@ -20,11 +20,18 @@ using namespace std; using namespace yul; using namespace yul::test::yul_fuzzer; -void yulFuzzerUtil::interpret(ostream& _os, shared_ptr _ast) +void yulFuzzerUtil::interpret( + ostream& _os, + shared_ptr _ast, + size_t _maxSteps, + size_t _maxTraceSize, + size_t _maxMemory +) { InterpreterState state; - state.maxTraceSize = 75; - state.maxSteps = 100; + state.maxTraceSize = _maxTraceSize; + state.maxSteps = _maxSteps; + state.maxMemSize = _maxMemory; Interpreter interpreter(state); interpreter(*_ast); _os << "Trace:" << endl; diff --git a/test/tools/ossfuzz/yulFuzzerCommon.h b/test/tools/ossfuzz/yulFuzzerCommon.h index 26b472b9c..b7db9494c 100644 --- a/test/tools/ossfuzz/yulFuzzerCommon.h +++ b/test/tools/ossfuzz/yulFuzzerCommon.h @@ -24,7 +24,16 @@ namespace yul_fuzzer { struct yulFuzzerUtil { - static void interpret(std::ostream& _os, std::shared_ptr _ast); + static void interpret( + std::ostream& _os, + std::shared_ptr _ast, + size_t _maxSteps = maxSteps, + size_t _maxTraceSize = maxTraceSize, + size_t _maxMemory = maxMemory + ); + static size_t constexpr maxSteps = 100; + static size_t constexpr maxTraceSize = 75; + static size_t constexpr maxMemory = 0x200; }; } } diff --git a/test/tools/ossfuzz/yulProto_diff_ossfuzz.cpp b/test/tools/ossfuzz/yulProto_diff_ossfuzz.cpp index 09862be4b..793effba3 100644 --- a/test/tools/ossfuzz/yulProto_diff_ossfuzz.cpp +++ b/test/tools/ossfuzz/yulProto_diff_ossfuzz.cpp @@ -74,7 +74,10 @@ DEFINE_PROTO_FUZZER(Function const& _input) ostringstream os2; try { - yulFuzzerUtil::interpret(os1, stack.parserResult()->code); + yulFuzzerUtil::interpret( + os1, + stack.parserResult()->code + ); } catch (yul::test::StepLimitReached const&) { @@ -87,7 +90,10 @@ DEFINE_PROTO_FUZZER(Function const& _input) stack.optimize(); try { - yulFuzzerUtil::interpret(os2, stack.parserResult()->code); + yulFuzzerUtil::interpret(os2, + stack.parserResult()->code, + (yul::test::yul_fuzzer::yulFuzzerUtil::maxSteps * 1.5) + ); } catch (yul::test::InterpreterTerminatedGeneric const&) {