From f476fe690fe6c7095f8f9a3aea5e44939c9dcfab Mon Sep 17 00:00:00 2001
From: Alex Sharov <AskAlexSharov@gmail.com>
Date: Mon, 20 Nov 2023 12:46:32 +0700
Subject: [PATCH] bor: check nil-blocks in other places (#8788)

---
 consensus/bor/bor.go                   | 11 +----------
 consensus/bor/finality/bor_verifier.go |  9 +++++++--
 2 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/consensus/bor/bor.go b/consensus/bor/bor.go
index 92d1d8087..dd0dced6a 100644
--- a/consensus/bor/bor.go
+++ b/consensus/bor/bor.go
@@ -1451,22 +1451,13 @@ func (c *Bor) GetRootHash(ctx context.Context, tx kv.Tx, start, end uint64) (str
 }
 
 func (c *Bor) getHeaderByNumber(ctx context.Context, tx kv.Tx, number uint64) (*types.Header, error) {
-	_, err := c.blockReader.BlockByNumber(ctx, tx, number)
-
-	if err != nil {
-		return nil, err
-	}
-
 	header, err := c.blockReader.HeaderByNumber(ctx, tx, number)
-
 	if err != nil {
 		return nil, err
 	}
-
 	if header == nil {
-		return nil, fmt.Errorf("block header not found: %d", number)
+		return nil, fmt.Errorf("[bor] header not found: %d", number)
 	}
-
 	return header, nil
 }
 
diff --git a/consensus/bor/finality/bor_verifier.go b/consensus/bor/finality/bor_verifier.go
index 7d9a77426..140ba128f 100644
--- a/consensus/bor/finality/bor_verifier.go
+++ b/consensus/bor/finality/bor_verifier.go
@@ -84,11 +84,16 @@ func borVerify(ctx context.Context, config *config, start uint64, end uint64, ha
 		}
 	} else {
 		// in case of milestone(isCheckpoint==false) get the hash of endBlock
-		block, err := config.blockReader.BlockByNumber(context.Background(), roTx, end)
+		block, err := config.blockReader.BlockByNumber(ctx, roTx, end)
 		if err != nil {
 			log.Debug("[bor] Failed to get end block hash while whitelisting milestone", "number", end, "err", err)
 			return hash, errEndBlock
 		}
+		if block == nil {
+			err := fmt.Errorf("[bor] block not found: %d", end)
+			log.Debug("[bor] Failed to get end block hash while whitelisting milestone", "number", end, "err", err)
+			return hash, err
+		}
 
 		localHash = fmt.Sprintf("%v", block.Hash())[2:]
 	}
@@ -135,7 +140,7 @@ func borVerify(ctx context.Context, config *config, start uint64, end uint64, ha
 	}
 
 	// fetch the end block hash
-	block, err := config.blockReader.BlockByNumber(context.Background(), roTx, end)
+	block, err := config.blockReader.BlockByNumber(ctx, roTx, end)
 	if err != nil {
 		log.Debug("[bor] Failed to get end block hash while whitelisting", "err", err)
 		return hash, errEndBlock