diff --git a/src/ripple/app/tx/impl/Transactor.cpp b/src/ripple/app/tx/impl/Transactor.cpp index 25f210ee5..d2bdbfc89 100644 --- a/src/ripple/app/tx/impl/Transactor.cpp +++ b/src/ripple/app/tx/impl/Transactor.cpp @@ -1164,7 +1164,7 @@ Transactor::operator()() uint256 const& callbackHookHash = emitDetails.getFieldH256(sfEmitHookHash); - auto const& hooksCallback = ledger.read(keylet::hook(callbackAccountID)); + auto const& hooksCallback = view().peek(keylet::hook(callbackAccountID)); auto const& hookDef = view().peek(keylet::hookDefinition(callbackHookHash)); if (!hookDef) { @@ -1173,6 +1173,20 @@ Transactor::operator()() break; } + if (!hooksCallback) + { + JLOG(j_.warn()) + << "HookError[]: Hook missing on callback"; + break; + } + + if (!hooksCallback->isFieldPresent(sfHooks)) + { + JLOG(j_.warn()) + << "HookError[]: Hooks Array missing on callback"; + break; + } + bool found = false; auto const& hooks = hooksCallback->getFieldArray(sfHooks); int hook_no = 0;