diff --git a/test/tools/ossfuzz/BytecodeOptimizerFuzzer.cpp b/test/tools/ossfuzz/BytecodeOptimizerFuzzer.cpp index 998d49c15..6eec71634 100644 --- a/test/tools/ossfuzz/BytecodeOptimizerFuzzer.cpp +++ b/test/tools/ossfuzz/BytecodeOptimizerFuzzer.cpp @@ -106,7 +106,7 @@ extern "C" int LLVMFuzzerTestOneInput(uint8_t const* _data, size_t _size) if (!compilerOutput.has_value()) return 0; - auto r = evmoneUtil.randomFunction(); + auto r = evmoneUtil.randomFunction(_size); if (!r.has_value()) return 0; diff --git a/test/tools/ossfuzz/SolidityEvmoneInterface.cpp b/test/tools/ossfuzz/SolidityEvmoneInterface.cpp index a906728d0..63bf7873f 100644 --- a/test/tools/ossfuzz/SolidityEvmoneInterface.cpp +++ b/test/tools/ossfuzz/SolidityEvmoneInterface.cpp @@ -75,7 +75,7 @@ optional SolidityCompilationFramework::noInputFunction() return {}; } -optional SolidityCompilationFramework::randomFunction() +optional SolidityCompilationFramework::randomFunction(size_t _seed) { Json::Value const& contractABI = m_compiler.contractABI(m_compiler.lastContractName()); unsigned numFunctions = contractABI.size(); @@ -84,7 +84,7 @@ optional SolidityCompilationFramework::randomFunction() else { uniform_int_distribution d(0, contractABI.size() - 1); - minstd_rand r(contractABI.size()); + minstd_rand r(_seed); return contractABI[d(r)]; } } diff --git a/test/tools/ossfuzz/SolidityEvmoneInterface.h b/test/tools/ossfuzz/SolidityEvmoneInterface.h index e6163c4af..bc5385c8b 100644 --- a/test/tools/ossfuzz/SolidityEvmoneInterface.h +++ b/test/tools/ossfuzz/SolidityEvmoneInterface.h @@ -102,7 +102,7 @@ public: std::optional noInputFunction(); /// @returns FunctionABI of a randomly chosen external function in /// current contract. - std::optional randomFunction(); + std::optional randomFunction(size_t _seed); /// @returns name of the last contract in source unit. std::string lastContractName() { @@ -181,9 +181,9 @@ public: { return m_compilationFramework.noInputFunction(); } - std::optional randomFunction() + std::optional randomFunction(size_t _seed) { - return m_compilationFramework.randomFunction(); + return m_compilationFramework.randomFunction(_seed); } void optSetting(frontend::OptimiserSettings _opt) { diff --git a/test/tools/ossfuzz/solc_ossfuzz.cpp b/test/tools/ossfuzz/solc_ossfuzz.cpp index c9ba40d48..d48706225 100644 --- a/test/tools/ossfuzz/solc_ossfuzz.cpp +++ b/test/tools/ossfuzz/solc_ossfuzz.cpp @@ -106,7 +106,7 @@ extern "C" int LLVMFuzzerTestOneInput(uint8_t const* _data, size_t _size) if (!compilerOutput.has_value()) return 0; - auto r = evmoneUtil.randomFunction(); + auto r = evmoneUtil.randomFunction(_size); if (!r.has_value()) return 0;