diff --git a/include/xrpl/tx/wasm/WasmiVM.h b/include/xrpl/tx/wasm/WasmiVM.h index cb56e64026..ce94b2ee29 100644 --- a/include/xrpl/tx/wasm/WasmiVM.h +++ b/include/xrpl/tx/wasm/WasmiVM.h @@ -293,7 +293,8 @@ private: int64_t gas, std::string_view funcName, std::vector const& params, - ImportVec const& imports); + ImportVec const& imports, + beast::Journal j); NotTEC checkHlp( @@ -301,7 +302,8 @@ private: HostFunctions& hfs, std::string_view funcName, std::vector const& params, - ImportVec const& imports); + ImportVec const& imports, + beast::Journal j); int addModule(Bytes const& wasmCode, bool instantiate, ImportVec const& imports, int64_t gas); diff --git a/src/libxrpl/tx/wasm/HostFuncWrapper.cpp b/src/libxrpl/tx/wasm/HostFuncWrapper.cpp index 460d19cd43..3e56c8dad6 100644 --- a/src/libxrpl/tx/wasm/HostFuncWrapper.cpp +++ b/src/libxrpl/tx/wasm/HostFuncWrapper.cpp @@ -491,6 +491,7 @@ isAmendmentEnabled_wrap(void* env, wasm_val_vec_t const* params, wasm_val_vec_t* if (auto const ret = hf->isAmendmentEnabled(uint256::fromVoid(slice->data())); ret && *ret == 1) return returnResult(runtime, params, results, ret, index); + // Fall through to string lookup — the 32 bytes may be an amendment name } if (slice->size() > 64) diff --git a/src/libxrpl/tx/wasm/WasmiVM.cpp b/src/libxrpl/tx/wasm/WasmiVM.cpp index 4a19be4a60..bcdca5c03d 100644 --- a/src/libxrpl/tx/wasm/WasmiVM.cpp +++ b/src/libxrpl/tx/wasm/WasmiVM.cpp @@ -756,24 +756,22 @@ WasmiEngine::run( ImportVec const& imports, beast::Journal j) { - j_ = j; - if (gas <= 0) return Unexpected(temBAD_AMOUNT); try { checkImports(imports, &hfs); - return runHlp(wasmCode, hfs, gas, funcName, params, imports); + return runHlp(wasmCode, hfs, gas, funcName, params, imports, j); } catch (std::exception const& e) { - print_wasm_error(std::string("exception: ") + e.what(), nullptr, j_); + print_wasm_error(std::string("exception: ") + e.what(), nullptr, j); } // LCOV_EXCL_START catch (...) { - print_wasm_error(std::string("exception: unknown"), nullptr, j_); + print_wasm_error(std::string("exception: unknown"), nullptr, j); } // LCOV_EXCL_STOP return Unexpected(tecFAILED_PROCESSING); @@ -786,10 +784,12 @@ WasmiEngine::runHlp( int64_t gas, std::string_view funcName, std::vector const& params, - ImportVec const& imports) + ImportVec const& imports, + beast::Journal j) { // currently only 1 module support, possible parallel UT run std::lock_guard const lg(m_); + j_ = j; if (wasmCode.empty()) throw std::runtime_error("empty module"); @@ -861,21 +861,19 @@ WasmiEngine::check( ImportVec const& imports, beast::Journal j) { - j_ = j; - try { checkImports(imports, &hfs); - return checkHlp(wasmCode, hfs, funcName, params, imports); + return checkHlp(wasmCode, hfs, funcName, params, imports, j); } catch (std::exception const& e) { - print_wasm_error(std::string("exception: ") + e.what(), nullptr, j_); + print_wasm_error(std::string("exception: ") + e.what(), nullptr, j); } // LCOV_EXCL_START catch (...) { - print_wasm_error(std::string("exception: unknown"), nullptr, j_); + print_wasm_error(std::string("exception: unknown"), nullptr, j); } // LCOV_EXCL_STOP @@ -888,10 +886,12 @@ WasmiEngine::checkHlp( HostFunctions& hfs, std::string_view funcName, std::vector const& params, - ImportVec const& imports) + ImportVec const& imports, + beast::Journal j) { // currently only 1 module support, possible parallel UT run std::lock_guard const lg(m_); + j_ = j; // Create and instantiate the module. if (wasmCode.empty())