From 6015faa0d37fcde3492b688c8aaa392f20d083a1 Mon Sep 17 00:00:00 2001 From: Francis Mendoza Date: Mon, 14 Nov 2022 13:05:26 -0800 Subject: [PATCH] Return srcIsrMalformed for taker_gets issuer in book_offers (#266) Fixes #266 --- src/rpc/RPCHelpers.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/rpc/RPCHelpers.cpp b/src/rpc/RPCHelpers.cpp index 5bbb13e67..327d0c279 100644 --- a/src/rpc/RPCHelpers.cpp +++ b/src/rpc/RPCHelpers.cpp @@ -1386,11 +1386,11 @@ parseBook(boost::json::object const& request) if (!ripple::to_issuer( pay_issuer, taker_pays.at("issuer").as_string().c_str())) - return Status{Error::rpcINVALID_PARAMS, "badTakerPaysIssuer"}; + return Status{Error::rpcSRC_ISR_MALFORMED, "badTakerPaysIssuer"}; if (pay_issuer == ripple::noAccount()) return Status{ - Error::rpcINVALID_PARAMS, "badTakerPaysIssuerAccountOne"}; + Error::rpcSRC_ISR_MALFORMED, "badTakerPaysIssuerAccountOne"}; } else { @@ -1399,16 +1399,19 @@ parseBook(boost::json::object const& request) if (isXRP(pay_currency) && !isXRP(pay_issuer)) return Status{ - Error::rpcINVALID_PARAMS, + Error::rpcSRC_ISR_MALFORMED, "Unneeded field 'taker_pays.issuer' for XRP currency " "specification."}; if (!isXRP(pay_currency) && isXRP(pay_issuer)) return Status{ - Error::rpcINVALID_PARAMS, + Error::rpcSRC_ISR_MALFORMED, "Invalid field 'taker_pays.issuer', expected non-XRP " "issuer."}; + if ((!isXRP(pay_currency)) && (!taker_pays.contains("issuer"))) + return Status{Error::rpcSRC_ISR_MALFORMED, "Missing non-XRP issuer."}; + ripple::AccountID get_issuer; if (taker_gets.contains("issuer"))