From 306eb6a72aa4486774a711d30857082fd1dc51fe Mon Sep 17 00:00:00 2001 From: mizuguchi_ef Date: Mon, 3 Feb 2025 15:59:13 +0900 Subject: [PATCH] fix nil pointer when block does not exist --- eth/api_backend.go | 7 ++++++- eth/tracers/api.go | 3 --- internal/ethapi/api.go | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/eth/api_backend.go b/eth/api_backend.go index 90439e8eab..b32754e5fd 100644 --- a/eth/api_backend.go +++ b/eth/api_backend.go @@ -19,6 +19,7 @@ package eth import ( "context" "errors" + "fmt" "math/big" "time" @@ -143,7 +144,11 @@ func (b *EthAPIBackend) BlockByNumber(ctx context.Context, number rpc.BlockNumbe } return b.eth.blockchain.GetBlock(header.Hash(), header.Number.Uint64()), nil } - return b.eth.blockchain.GetBlockByNumber(uint64(number)), nil + block := b.eth.blockchain.GetBlockByNumber(uint64(number)) + if block == nil { + return nil, fmt.Errorf("block #%d not found", number) + } + return block, nil } func (b *EthAPIBackend) BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error) { diff --git a/eth/tracers/api.go b/eth/tracers/api.go index 22163030de..c77d7727e6 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -114,9 +114,6 @@ func (api *API) blockByNumber(ctx context.Context, number rpc.BlockNumber) (*typ if err != nil { return nil, err } - if block == nil { - return nil, fmt.Errorf("block #%d not found", number) - } return block, nil } diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index d9cec560ea..2e500b7248 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -1746,9 +1746,9 @@ func (api *DebugAPI) GetRawTransaction(ctx context.Context, hash common.Hash) (h // PrintBlock retrieves a block and returns its pretty printed form. func (api *DebugAPI) PrintBlock(ctx context.Context, number uint64) (string, error) { - block, _ := api.b.BlockByNumber(ctx, rpc.BlockNumber(number)) - if block == nil { - return "", fmt.Errorf("block #%d not found", number) + block, err := api.b.BlockByNumber(ctx, rpc.BlockNumber(number)) + if err != nil { + return "", err } return spew.Sdump(block), nil }