From 50a649911218ced9e2a9f9c6bea93be539d84a84 Mon Sep 17 00:00:00 2001 From: tequ Date: Tue, 29 Jul 2025 14:40:39 +0900 Subject: [PATCH] =?UTF-8?q?Fix=20`FromJSIntArrayOrHexString`=20`[]`=20or?= =?UTF-8?q?=20`=E2=80=9D"`=20return=20vector(size=3D0),=20not=20nullptr.?= =?UTF-8?q?=20(#553)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ripple/app/hook/impl/applyHook.cpp | 28 ++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/ripple/app/hook/impl/applyHook.cpp b/src/ripple/app/hook/impl/applyHook.cpp index 725a68b99..c2c914dd4 100644 --- a/src/ripple/app/hook/impl/applyHook.cpp +++ b/src/ripple/app/hook/impl/applyHook.cpp @@ -1020,7 +1020,7 @@ FromJSIntArrayOrHexString(JSContext* ctx, JSValueConst& v, int max_len) js_get_length64(ctx, &n, v); if (n == 0) - return {}; + return out; if (n > max_len) return {}; @@ -1057,7 +1057,7 @@ FromJSIntArrayOrHexString(JSContext* ctx, JSValueConst& v, int max_len) return {}; if (len <= 0) - return {}; + return out; if (len > (max_len << 1U)) return {}; @@ -8045,11 +8045,27 @@ DEFINE_JS_FUNCTION( auto cur = FromJSIntArrayOrHexString(ctx, raw_cur, 20); auto isu = FromJSIntArrayOrHexString(ctx, raw_isu, 20); - if (!cur.has_value() && !JS_IsUndefined(raw_cur)) - returnJS(INVALID_ARGUMENT); + if (!cur.has_value()) + { + if (!JS_IsUndefined(raw_cur)) + returnJS(INVALID_ARGUMENT); + } + else + { + if (cur->size() != 3 && cur->size() != 20) + returnJS(INVALID_ARGUMENT); + } - if (!isu.has_value() && !JS_IsUndefined(raw_isu)) - returnJS(INVALID_ARGUMENT); + if (!isu.has_value()) + { + if (!JS_IsUndefined(raw_isu)) + returnJS(INVALID_ARGUMENT); + } + else + { + if (isu->size() != 20) + returnJS(INVALID_ARGUMENT); + } if (any_missing(f1, fc) || !fits_u32(fc)) returnJS(INVALID_ARGUMENT);