ethclient: ensure tx json is not nil before accessing it #19653 (#1359)

This commit is contained in:
Daniel Liu 2025-08-20 14:49:43 +08:00 committed by GitHub
parent 9ad6312396
commit e6f85271a3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -253,12 +253,13 @@ func (ec *Client) TransactionCount(ctx context.Context, blockHash common.Hash) (
func (ec *Client) TransactionInBlock(ctx context.Context, blockHash common.Hash, index uint) (*types.Transaction, error) {
var json *rpcTransaction
err := ec.c.CallContext(ctx, &json, "eth_getTransactionByBlockHashAndIndex", blockHash, hexutil.Uint64(index))
if err == nil {
if json == nil {
return nil, ethereum.ErrNotFound
} else if _, r, _ := json.tx.RawSignatureValues(); r == nil {
return nil, errors.New("server returned transaction without signature")
}
if err != nil {
return nil, err
}
if json == nil {
return nil, ethereum.ErrNotFound
} else if _, r, _ := json.tx.RawSignatureValues(); r == nil {
return nil, errors.New("server returned transaction without signature")
}
if json.From != nil && json.BlockHash != nil {
setSenderFromServer(json.tx, *json.From, *json.BlockHash)