RPCConsole: Throw when overflowing size_t type for array indices

This commit is contained in:
MarcoFalke 2021-10-05 14:47:12 +02:00
parent c79d9fb2f6
commit faa5e171e6
No known key found for this signature in database
GPG key ID: CE2B75697E69A548

View file

@ -247,10 +247,11 @@ bool RPCConsole::RPCParseCommandLine(interfaces::Node* node, std::string &strRes
UniValue subelement;
if (lastResult.isArray())
{
for(char argch: curarg)
if (!IsDigit(argch))
throw std::runtime_error("Invalid result query");
subelement = lastResult[LocaleIndependentAtoi<int>(curarg)];
const auto parsed{ToIntegral<size_t>(curarg)};
if (!parsed) {
throw std::runtime_error("Invalid result query");
}
subelement = lastResult[parsed.value()];
}
else if (lastResult.isObject())
subelement = find_value(lastResult, curarg);