@@ -897,6 +897,10 @@ func (s *PublicBlockChainAPI) GetCandidateStatus(ctx context.Context, coinbaseAd
897897 result [fieldSuccess ] = false
898898 return result , err
899899 }
900+ if statedb == nil {
901+ result [fieldSuccess ] = false
902+ return result , errors .New ("nil statedb in GetCandidateStatus" )
903+ }
900904 candidatesAddresses := state .GetCandidates (statedb )
901905 candidates = make ([]utils.Masternode , 0 , len (candidatesAddresses ))
902906 for _ , address := range candidatesAddresses {
@@ -1052,6 +1056,10 @@ func (s *PublicBlockChainAPI) GetCandidates(ctx context.Context, epoch rpc.Epoch
10521056 result [fieldSuccess ] = false
10531057 return result , err
10541058 }
1059+ if statedb == nil {
1060+ result [fieldSuccess ] = false
1061+ return result , errors .New ("nil statedb in GetCandidates" )
1062+ }
10551063 candidatesAddresses := state .GetCandidates (statedb )
10561064 candidates = make ([]utils.Masternode , 0 , len (candidatesAddresses ))
10571065 for _ , address := range candidatesAddresses {
@@ -1305,6 +1313,9 @@ func DoCall(ctx context.Context, b Backend, args CallArgs, blockNrOrHash rpc.Blo
13051313 if statedb == nil || err != nil {
13061314 return nil , 0 , false , err , nil
13071315 }
1316+ if header == nil {
1317+ return nil , 0 , false , errors .New ("nil header in DoCall" ), nil
1318+ }
13081319 if err := overrides .Apply (statedb ); err != nil {
13091320 return nil , 0 , false , err , nil
13101321 }
@@ -1327,6 +1338,9 @@ func DoCall(ctx context.Context, b Backend, args CallArgs, blockNrOrHash rpc.Blo
13271338 if err != nil {
13281339 return nil , 0 , false , err , nil
13291340 }
1341+ if block == nil {
1342+ return nil , 0 , false , fmt .Errorf ("nil block in DoCall: number=%d, hash=%s" , header .Number .Uint64 (), header .Hash ().Hex ()), nil
1343+ }
13301344 author , err := b .GetEngine ().Author (block .Header ())
13311345 if err != nil {
13321346 return nil , 0 , false , err , nil
@@ -1948,6 +1962,9 @@ func AccessList(ctx context.Context, b Backend, blockNrOrHash rpc.BlockNumberOrH
19481962 if err != nil {
19491963 return nil , 0 , nil , err
19501964 }
1965+ if block == nil {
1966+ return nil , 0 , nil , fmt .Errorf ("nil block in AccessList: number=%d, hash=%s" , header .Number .Uint64 (), header .Hash ().Hex ())
1967+ }
19511968 author , err := b .GetEngine ().Author (block .Header ())
19521969 if err != nil {
19531970 return nil , 0 , nil , err
@@ -3617,10 +3634,16 @@ func GetSignersFromBlocks(b Backend, blockNumber uint64, blockHash common.Hash,
36173634 if err != nil {
36183635 return addrs , err
36193636 }
3637+ if header == nil {
3638+ return addrs , errors .New ("nil header in GetSignersFromBlocks" )
3639+ }
36203640 blockData , err := b .BlockByNumber (nil , rpc .BlockNumber (i ))
36213641 if err != nil {
36223642 return addrs , err
36233643 }
3644+ if blockData == nil {
3645+ return addrs , errors .New ("nil blockData in GetSignersFromBlocks" )
3646+ }
36243647 signTxs := engine .CacheSigningTxs (header .Hash (), blockData .Transactions ())
36253648 for _ , signtx := range signTxs {
36263649 blkHash := common .BytesToHash (signtx .Data ()[len (signtx .Data ())- 32 :])
0 commit comments