diff options
-rw-r--r-- | src/rest.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/rest.cpp b/src/rest.cpp index 185508d2c9..3cf6ad343c 100644 --- a/src/rest.cpp +++ b/src/rest.cpp @@ -788,15 +788,17 @@ static bool rest_getutxos(const std::any& context, HTTPRequest* req, const std:: for (size_t i = (fCheckMemPool) ? 1 : 0; i < uriParts.size(); i++) { - std::string strTxid = uriParts[i].substr(0, uriParts[i].find('-')); - std::string strOutput = uriParts[i].substr(uriParts[i].find('-')+1); - auto output{ToIntegral<uint32_t>(strOutput)}; + const auto txid_out{util::Split<std::string_view>(uriParts[i], '-')}; + if (txid_out.size() != 2) { + return RESTERR(req, HTTP_BAD_REQUEST, "Parse error"); + } + auto output{ToIntegral<uint32_t>(txid_out.at(1))}; - if (!output || !IsHex(strTxid)) { + if (!output || !IsHex(txid_out.at(0))) { return RESTERR(req, HTTP_BAD_REQUEST, "Parse error"); } - vOutPoints.emplace_back(TxidFromString(strTxid), *output); + vOutPoints.emplace_back(TxidFromString(txid_out.at(0)), *output); } if (vOutPoints.size() > 0) |