From 69fa571f8dd7a8bca0b4432c0f8f17eb574db784 Mon Sep 17 00:00:00 2001
From: ledgerwatch <akhounov@gmail.com>
Date: Thu, 18 Nov 2021 14:05:20 +0000
Subject: [PATCH] Fix for eth_getLogs with zero fromBlock and toBlock (#2989)

---
 cmd/rpcdaemon/commands/eth_receipts.go | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/cmd/rpcdaemon/commands/eth_receipts.go b/cmd/rpcdaemon/commands/eth_receipts.go
index 504adbae18..e246cc01ae 100644
--- a/cmd/rpcdaemon/commands/eth_receipts.go
+++ b/cmd/rpcdaemon/commands/eth_receipts.go
@@ -91,14 +91,25 @@ func (api *APIImpl) GetLogs(ctx context.Context, crit filters.FilterCriteria) ([
 		}
 
 		begin = 0
-		if crit.FromBlock != nil && crit.FromBlock.Sign() > 0 {
-			begin = crit.FromBlock.Uint64()
+		if crit.FromBlock != nil {
+			if crit.FromBlock.Sign() >= 0 {
+				begin = crit.FromBlock.Uint64()
+			} else {
+				return nil, fmt.Errorf("negative value for FromBlock: %v", crit.FromBlock)
+			}
 		}
 		end = latest
-		if crit.ToBlock != nil && crit.ToBlock.Sign() > 0 {
-			end = crit.ToBlock.Uint64()
+		if crit.ToBlock != nil {
+			if crit.ToBlock.Sign() >= 0 {
+				end = crit.ToBlock.Uint64()
+			} else {
+				return nil, fmt.Errorf("negative value for ToBlock: %v", crit.ToBlock)
+			}
 		}
 	}
+	if end < begin {
+		return nil, fmt.Errorf("end (%d) < begin (%d)", end, begin)
+	}
 
 	blockNumbers := roaring.New()
 	blockNumbers.AddRange(begin, end+1) // [min,max)
-- 
GitLab