fix nil pointer dereference on DoCall

This commit is contained in:
marcello33 2025-03-27 18:25:27 +01:00
parent 5b8042378f
commit 7d005ab547
No known key found for this signature in database
GPG key ID: 06128777E3C36B16

View file

@ -1399,7 +1399,10 @@ func applyMessageWithEVM(ctx context.Context, evm *vm.EVM, msg *core.Message, st
} }
if err != nil { if err != nil {
return result, fmt.Errorf("err: %w (supplied gas %d)", err, msg.GasLimit) return nil, fmt.Errorf("err: %w (supplied gas %d)", err, msg.GasLimit)
}
if result == nil {
return nil, errors.New("EVM ApplyMessage returned nil result without error")
} }
return result, nil return result, nil
@ -1463,6 +1466,9 @@ func (api *BlockChainAPI) CallWithState(ctx context.Context, args TransactionArg
if err != nil { if err != nil {
return nil, err return nil, err
} }
if result == nil {
return nil, fmt.Errorf("DoCall returned nil result with no error (block=%v)", blockNrOrHash)
}
if int(api.b.RPCRpcReturnDataLimit()) > 0 && len(result.ReturnData) > int(api.b.RPCRpcReturnDataLimit()) { if int(api.b.RPCRpcReturnDataLimit()) > 0 && len(result.ReturnData) > int(api.b.RPCRpcReturnDataLimit()) {
return nil, fmt.Errorf("call returned result of length %d exceeding limit %d", len(result.ReturnData), int(api.b.RPCRpcReturnDataLimit())) return nil, fmt.Errorf("call returned result of length %d exceeding limit %d", len(result.ReturnData), int(api.b.RPCRpcReturnDataLimit()))