rpc: fix incomplete range check in get_coinbase_tx_sum + update test

This commit is contained in:
Thomas
2026-04-28 19:30:21 +02:00
parent 94c2ed34c2
commit df2b8b4bf6
2 changed files with 6 additions and 3 deletions
+2 -2
View File
@@ -3076,9 +3076,9 @@ namespace cryptonote
{
RPC_TRACKER(get_coinbase_tx_sum);
const uint64_t bc_height = m_core.get_current_blockchain_height();
if (req.height >= bc_height || req.count > bc_height)
if (req.height >= bc_height || req.count > bc_height - req.height)
{
res.status = "height or count is too large";
res.status = "requested range exceeds blockchain height";
return true;
}
CHECK_PAYMENT_MIN1(req, res, COST_PER_COINBASE_TX_SUM_BLOCK * req.count, false);
+4 -1
View File
@@ -219,9 +219,12 @@ class BlockchainTest():
assert res.emission_amount < extrapolated and res.emission_amount > extrapolated - 1e12
assert res.fee_amount == 0
sum_blocks_emission = res.emission_amount
res = daemon.get_coinbase_tx_sum(1, sum_blocks)
res = daemon.get_coinbase_tx_sum(1, sum_blocks - 1)
assert res.emission_amount == sum_blocks_emission - 17592186044415
assert res.fee_amount == 0
# height + count must not exceed the blockchain height
res = daemon.get_coinbase_tx_sum(1, sum_blocks)
assert res.status != 'OK'
res = daemon.get_output_distribution([0, 1, 17592186044415], 0, 0)
assert len(res.distributions) == 3