Merge pull request #1506 from maticnetwork/mardizzone/nil-check

fix nil pointer dereference on DoCall
This commit is contained in:
Marcello Ardizzone 2025-03-27 19:04:57 +01:00 committed by GitHub
commit f96d451905
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1399,7 +1399,10 @@ func applyMessageWithEVM(ctx context.Context, evm *vm.EVM, msg *core.Message, st
}
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
@ -1463,6 +1466,9 @@ func (api *BlockChainAPI) CallWithState(ctx context.Context, args TransactionArg
if err != nil {
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()) {
return nil, fmt.Errorf("call returned result of length %d exceeding limit %d", len(result.ReturnData), int(api.b.RPCRpcReturnDataLimit()))