From c9dcff90fa00fd9c9836218b8a6db58ebad5a458 Mon Sep 17 00:00:00 2001 From: Richard Holland Date: Fri, 24 May 2024 01:18:36 +1000 Subject: [PATCH] fix js otxn_id hook_account bugs --- src/ripple/app/hook/impl/applyHook.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/ripple/app/hook/impl/applyHook.cpp b/src/ripple/app/hook/impl/applyHook.cpp index c2d3208b8..b521094a8 100644 --- a/src/ripple/app/hook/impl/applyHook.cpp +++ b/src/ripple/app/hook/impl/applyHook.cpp @@ -2849,8 +2849,12 @@ DEFINE_JS_FUNCTION( ? applyCtx.tx.getFieldH256(sfTransactionHash) : applyCtx.tx.getTransactionID()); - // RH TODO: this can fail with a JSException, replace all instances with something safer V - return JS_NewArrayBufferCopy(ctx, txID.data(), txID.size()); + auto out = ToJSIntArray(ctx, Slice{txID.data(), txID.size()}); + + if (!out.has_value()) + returnJS(INTERNAL_ERROR); + + return *out; JS_HOOK_TEARDOWN(); } @@ -5529,7 +5533,12 @@ DEFINE_JS_FUNCNARG( { JS_HOOK_SETUP(); - return JS_NewArrayBufferCopy(ctx, hookCtx.result.account.data(), 20); + auto out = ToJSIntArray(ctx, Slice{hookCtx.result.account.data(), 20u}); + + if (!out.has_value()) + returnJS(INTERNAL_ERROR); + + return *out; JS_HOOK_TEARDOWN(); }