Skip to content

Commit a3d4be4

Browse files
authored
fix: Set correct index for limit in book_offers CLI (#6043)
This change fixes an indexing typo in the `book_offers` CLI processing, and does not affect the HTTPS/WS RPC processing.
1 parent 6ff495f commit a3d4be4

File tree

2 files changed

+34
-15
lines changed

2 files changed

+34
-15
lines changed

src/test/rpc/RPCCall_test.cpp

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1584,8 +1584,6 @@ static RPCCallTestData const rpcCallTestArray[] = {
15841584
"EUR/rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
15851585
"rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
15861586
"ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789",
1587-
"junk", // Note: indexing bug in parseBookOffers() requires junk
1588-
// param.
15891587
"200",
15901588
},
15911589
RPCCallTestData::no_exception,
@@ -1597,7 +1595,6 @@ static RPCCallTestData const rpcCallTestArray[] = {
15971595
"issuer" : "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
15981596
"ledger_hash" : "ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789",
15991597
"limit" : 200,
1600-
"proof" : true,
16011598
"taker_gets" : {
16021599
"currency" : "EUR",
16031600
"issuer" : "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA"
@@ -1617,8 +1614,8 @@ static RPCCallTestData const rpcCallTestArray[] = {
16171614
"EUR/rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
16181615
"rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
16191616
"ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789",
1620-
"junk", // Note: indexing bug in parseBookOffers() requires junk param.
16211617
"200",
1618+
"0",
16221619
"MyMarker"},
16231620
RPCCallTestData::no_exception,
16241621
R"({
@@ -1630,7 +1627,6 @@ static RPCCallTestData const rpcCallTestArray[] = {
16301627
"ledger_hash" : "ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789",
16311628
"limit" : 200,
16321629
"marker" : "MyMarker",
1633-
"proof" : true,
16341630
"taker_gets" : {
16351631
"currency" : "EUR",
16361632
"issuer" : "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA"
@@ -1665,8 +1661,8 @@ static RPCCallTestData const rpcCallTestArray[] = {
16651661
"EUR/rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
16661662
"rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
16671663
"ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789",
1668-
"junk", // Note: indexing bug in parseBookOffers() requires junk param.
16691664
"200",
1665+
"0",
16701666
"MyMarker",
16711667
"extra"},
16721668
RPCCallTestData::no_exception,
@@ -1770,12 +1766,19 @@ static RPCCallTestData const rpcCallTestArray[] = {
17701766
"EUR/rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
17711767
"rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
17721768
"ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789",
1773-
"junk", // Note: indexing bug in parseBookOffers() requires junk
1774-
// param.
17751769
"not_a_number",
17761770
},
1777-
RPCCallTestData::bad_cast,
1778-
R"()"},
1771+
RPCCallTestData::no_exception,
1772+
R"({
1773+
"method" : "book_offers",
1774+
"params" : [
1775+
{
1776+
"error" : "invalidParams",
1777+
"error_code" : 31,
1778+
"error_message" : "Invalid field 'limit'."
1779+
}
1780+
]
1781+
})"},
17791782

17801783
// can_delete
17811784
// ------------------------------------------------------------------

src/xrpld/rpc/detail/RPCCall.cpp

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -332,15 +332,31 @@ class RPCParser
332332

333333
if (jvParams.size() >= 5)
334334
{
335-
int iLimit = jvParams[5u].asInt();
335+
try
336+
{
337+
int iLimit = jvParams[4u].asInt();
336338

337-
if (iLimit > 0)
338-
jvRequest[jss::limit] = iLimit;
339+
if (iLimit > 0)
340+
jvRequest[jss::limit] = iLimit;
341+
}
342+
catch (std::exception const&)
343+
{
344+
return RPC::invalid_field_error(jss::limit);
345+
}
339346
}
340347

341-
if (jvParams.size() >= 6 && jvParams[5u].asInt())
348+
if (jvParams.size() >= 6)
342349
{
343-
jvRequest[jss::proof] = true;
350+
try
351+
{
352+
int bProof = jvParams[5u].asInt();
353+
if (bProof)
354+
jvRequest[jss::proof] = true;
355+
}
356+
catch (std::exception const&)
357+
{
358+
return RPC::invalid_field_error(jss::proof);
359+
}
344360
}
345361

346362
if (jvParams.size() == 7)

0 commit comments

Comments
 (0)