diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d99c91673..2ab0493c33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,7 +39,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features -* (rpx) [#629](https://github.com/crypto-org-chain/ethermint/pull/629) Add support for eth_getBlockReceipts. +* (rpc) [#657](https://github.com/crypto-org-chain/ethermint/pull/657) Sanity checks for TraceTx and TraceCall. +* (rpc) [#629](https://github.com/crypto-org-chain/ethermint/pull/629) Add support for eth_getBlockReceipts. * (evm) [#414](https://github.com/crypto-org-chain/ethermint/pull/414) Integrate go-block-stm for parallel tx execution. * (block-stm) [#498](https://github.com/crypto-org-chain/ethermint/pull/498) Enable incarnation cache for block-stm executor. diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index 038f90acfb..96b5b50f1b 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -488,7 +488,10 @@ func execTrace[T traceRequest]( // be tracer dependent. func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*types.QueryTraceTxResponse, error) { var baseFee *big.Int - if req != nil && req.BaseFee != nil { + if req == nil || req.Msg == nil { + return nil, status.Error(codes.InvalidArgument, "request and message cannot be empty") + } + if req.BaseFee != nil { baseFee = big.NewInt(req.BaseFee.Int64()) } resultData, err := execTrace( @@ -614,6 +617,9 @@ func (k Keeper) TraceBlock(c context.Context, req *types.QueryTraceBlockRequest) // executes the given call in the provided environment. The return value will // be tracer dependent. func (k Keeper) TraceCall(c context.Context, req *types.QueryTraceCallRequest) (*types.QueryTraceCallResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "request cannot be empty") + } resultData, err := execTrace( c, req,