fix: api: Length check the array sent to eth_feeHistory RPC (#11696)

Co-authored-by: Rod Vagg <rod@vagg.org>
Co-authored-by: Steven Allen <steven@stebalien.com>
This commit is contained in:
parthshah1 2024-03-10 18:43:45 -07:00 committed by Phi-rjan
parent 1a21b42fd7
commit 6508306a78

View File

@ -42,6 +42,8 @@ import (
var ErrUnsupported = errors.New("unsupported method") var ErrUnsupported = errors.New("unsupported method")
const maxEthFeeHistoryRewardPercentiles = 100
type EthModuleAPI interface { type EthModuleAPI interface {
EthBlockNumber(ctx context.Context) (ethtypes.EthUint64, error) EthBlockNumber(ctx context.Context) (ethtypes.EthUint64, error)
EthAccounts(ctx context.Context) ([]ethtypes.EthAddress, error) EthAccounts(ctx context.Context) ([]ethtypes.EthAddress, error)
@ -698,6 +700,9 @@ func (a *EthModule) EthFeeHistory(ctx context.Context, p jsonrpc.RawParams) (eth
} }
rewardPercentiles := make([]float64, 0) rewardPercentiles := make([]float64, 0)
if params.RewardPercentiles != nil { if params.RewardPercentiles != nil {
if len(*params.RewardPercentiles) > maxEthFeeHistoryRewardPercentiles {
return ethtypes.EthFeeHistory{}, errors.New("length of the reward percentile array cannot be greater than 100")
}
rewardPercentiles = append(rewardPercentiles, *params.RewardPercentiles...) rewardPercentiles = append(rewardPercentiles, *params.RewardPercentiles...)
} }
for i, rp := range rewardPercentiles { for i, rp := range rewardPercentiles {