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