Skip to content

Commit 95082c2

Browse files
committed
fix(jsonrpc): use min(to, currentMaxBlock) to compare with maxBlockRange
1 parent c2383f7 commit 95082c2

File tree

3 files changed

+161
-15
lines changed

3 files changed

+161
-15
lines changed

framework/src/main/java/org/tron/core/services/jsonrpc/filters/LogFilterWrapper.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.tron.core.services.jsonrpc.filters;
22

3-
import static org.tron.common.math.Maths.min;
3+
import static org.tron.common.math.StrictMathWrapper.min;
44

55
import com.google.protobuf.ByteString;
66
import lombok.Getter;
@@ -58,7 +58,7 @@ public LogFilterWrapper(FilterRequest fr, long currentMaxBlockNum, Wallet wallet
5858
if (toBlockSrc == -1) {
5959
toBlockSrc = Long.MAX_VALUE;
6060
}
61-
fromBlockSrc = min(toBlockSrc, currentMaxBlockNum, true);
61+
fromBlockSrc = min(toBlockSrc, currentMaxBlockNum);
6262

6363
} else if (StringUtils.isNotEmpty(fr.getFromBlock())
6464
&& StringUtils.isEmpty(fr.getToBlock())) {
@@ -90,7 +90,8 @@ public LogFilterWrapper(FilterRequest fr, long currentMaxBlockNum, Wallet wallet
9090

9191
// till now, it needs to check block range for eth_getLogs
9292
int maxBlockRange = Args.getInstance().getJsonRpcMaxBlockRange();
93-
if (checkBlockRange && maxBlockRange > 0 && (toBlockSrc - fromBlockSrc) > maxBlockRange) {
93+
if (checkBlockRange && maxBlockRange > 0
94+
&& min(toBlockSrc, currentMaxBlockNum) - fromBlockSrc > maxBlockRange) {
9495
throw new JsonRpcInvalidParamsException("exceed max block range: " + maxBlockRange);
9596
}
9697
}

framework/src/test/java/org/tron/core/config/args/ArgsTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,25 @@ public void testInitService() {
256256
Assert.assertTrue(Args.getInstance().isJsonRpcHttpPBFTNodeEnable());
257257
Assert.assertEquals(30, Args.getInstance().getJsonRpcMaxBlockRange());
258258
Assert.assertEquals(40, Args.getInstance().getJsonRpcMaxSubTopics());
259+
260+
// test set invalid value
261+
storage.put("node.jsonrpc.maxBlockRange", "0");
262+
storage.put("node.jsonrpc.maxSubTopics", "0");
263+
config = ConfigFactory.defaultOverrides().withFallback(ConfigFactory.parseMap(storage));
264+
// check value
265+
Args.setParam(config);
266+
Assert.assertEquals(0, Args.getInstance().getJsonRpcMaxBlockRange());
267+
Assert.assertEquals(0, Args.getInstance().getJsonRpcMaxSubTopics());
268+
269+
// test set invalid value
270+
storage.put("node.jsonrpc.maxBlockRange", "-2");
271+
storage.put("node.jsonrpc.maxSubTopics", "-4");
272+
config = ConfigFactory.defaultOverrides().withFallback(ConfigFactory.parseMap(storage));
273+
// check value
274+
Args.setParam(config);
275+
Assert.assertEquals(-2, Args.getInstance().getJsonRpcMaxBlockRange());
276+
Assert.assertEquals(-4, Args.getInstance().getJsonRpcMaxSubTopics());
277+
259278
Args.clearParam();
260279
}
261280
}

0 commit comments

Comments
 (0)