From f91cf22312ab93a329b76f3afbe7ce7f928db8e6 Mon Sep 17 00:00:00 2001 From: zsfelfoldi Date: Tue, 16 Sep 2025 13:09:40 +0200 Subject: [PATCH] eth/filters: apply limit to topic search positions --- eth/filters/api.go | 11 +++++++++-- eth/filters/filter_system.go | 11 +++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/eth/filters/api.go b/eth/filters/api.go index 33c746f084..d678c40389 100644 --- a/eth/filters/api.go +++ b/eth/filters/api.go @@ -347,8 +347,15 @@ func (api *FilterAPI) GetLogs(ctx context.Context, crit FilterCriteria) ([]*type if len(crit.Topics) > maxTopics { return nil, errExceedMaxTopics } - if len(crit.Addresses) > api.logQueryLimit { - return nil, errExceedLogQueryLimit + if api.logQueryLimit != 0 { + if len(crit.Addresses) > api.logQueryLimit { + return nil, errExceedLogQueryLimit + } + for _, topics := range crit.Topics { + if len(topics) > api.logQueryLimit { + return nil, errExceedLogQueryLimit + } + } } var filter *Filter diff --git a/eth/filters/filter_system.go b/eth/filters/filter_system.go index 01e5f787b0..0916d834ba 100644 --- a/eth/filters/filter_system.go +++ b/eth/filters/filter_system.go @@ -295,8 +295,15 @@ func (es *EventSystem) SubscribeLogs(crit ethereum.FilterQuery, logs chan []*typ if len(crit.Topics) > maxTopics { return nil, errExceedMaxTopics } - if len(crit.Addresses) > es.sys.cfg.LogQueryLimit { - return nil, errExceedLogQueryLimit + if es.sys.cfg.LogQueryLimit != 0 { + if len(crit.Addresses) > es.sys.cfg.LogQueryLimit { + return nil, errExceedLogQueryLimit + } + for _, topics := range crit.Topics { + if len(topics) > es.sys.cfg.LogQueryLimit { + return nil, errExceedLogQueryLimit + } + } } var from, to rpc.BlockNumber if crit.FromBlock == nil {