From f50d3f84f9d093057c7dc1815bfd14fe762e78c0 Mon Sep 17 00:00:00 2001 From: kdeme Date: Tue, 9 Jul 2019 15:52:41 +0200 Subject: [PATCH] Add bounds check on getSuccessorHeader and getAncestorHeader --- nimbus/p2p/chain.nim | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nimbus/p2p/chain.nim b/nimbus/p2p/chain.nim index df31b8ad0..56ceec272 100644 --- a/nimbus/p2p/chain.nim +++ b/nimbus/p2p/chain.nim @@ -24,14 +24,14 @@ method getBestBlockHeader*(c: Chain): BlockHeader {.gcsafe.} = c.db.getCanonicalHead() method getSuccessorHeader*(c: Chain, h: BlockHeader, output: var BlockHeader, skip = 0'u): bool {.gcsafe.} = - let n = if skip > 0'u: h.blockNumber + 1 + skip.toBlockNumber - else: h.blockNumber + 1 - result = c.db.getBlockHeader(n, output) + let offset = 1 + skip.toBlockNumber + if h.blockNumber <= (not 0.toBlockNumber) - offset: + result = c.db.getBlockHeader(h.blockNumber + offset, output) method getAncestorHeader*(c: Chain, h: BlockHeader, output: var BlockHeader, skip = 0'u): bool {.gcsafe.} = - let n = if skip > 0'u: h.blockNumber - 1 - skip.toBlockNumber - else: h.blockNumber - 1 - c.db.getBlockHeader(n, output) + let offset = 1 + skip.toBlockNumber + if h.blockNumber >= offset: + result = c.db.getBlockHeader(h.blockNumber - offset, output) method getBlockBody*(c: Chain, blockHash: KeccakHash): BlockBodyRef = result = nil