This is an automated email from the ASF dual-hosted git repository.
lizhimins pushed a commit to branch rocketmq-studio
in repository https://gitbox.apache.org/repos/asf/rocketmq-dashboard.git
The following commit(s) were added to refs/heads/rocketmq-studio by this push:
new dac9fc1f1 fix(acl): prevent Tencent rule page overflow (#2562)
dac9fc1f1 is described below
commit dac9fc1f1e107b2332925d310c62ab03da5a6748
Author: btlqql <[email protected]>
AuthorDate: Tue Aug 25 17:36:41 2026 +0800
fix(acl): prevent Tencent rule page overflow (#2562)
---
.../rocketmq/studio/instance/acl/AclService.java | 2 +-
.../rocketmq/studio/instance/acl/AclServiceTest.java | 19 +++++++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git
a/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java
b/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java
index 3cf970187..716ad88a9 100644
---
a/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java
+++
b/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java
@@ -396,7 +396,7 @@ public class AclService {
private static PageResult<AclRuleVO> paginateRules(List<AclRuleVO> rules,
int page, int pageSize) {
int total = rules.size();
- int fromIndex = Math.min((page - 1) * pageSize, total);
+ int fromIndex = (int) Math.min(Pagination.pageOffset(page, pageSize),
total);
int toIndex = Math.min(fromIndex + pageSize, total);
return PageResult.of(rules.subList(fromIndex, toIndex), total, page,
pageSize);
}
diff --git
a/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
b/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
index e1274ab03..33f318e59 100644
---
a/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
+++
b/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
@@ -187,6 +187,25 @@ class AclServiceTest {
verifyNoInteractions(tencentAclService);
}
+ @Test
+ void
listRulesShouldReturnEmptyPageWhenTencentPageOffsetExceedsIntegerRange() {
+ InstanceVO instance = InstanceVO.builder()
+ .name("tencent-instance")
+ .vendor(InstanceVendor.TENCENT)
+ .type(InstanceType.CLOUD)
+ .build();
+
when(instanceRepository.findByIdentifier("tencent-instance")).thenReturn(Optional.of(instance));
+ when(tencentAclService.listRules("tencent-instance",
null)).thenReturn(List.of(
+
AclRuleVO.builder().principal("role-a").resource("topic-a").build()));
+
+ PageResult<AclRuleVO> result = aclService.listRules(null, null, null,
null, null,
+ "tencent-instance", Integer.MAX_VALUE, 100);
+
+ assertThat(result.getItems()).isEmpty();
+ assertThat(result.getTotal()).isEqualTo(1);
+ assertThat(result.getPage()).isEqualTo(Integer.MAX_VALUE);
+ }
+
@Test
void createRuleShouldSetIdAndTimestamp() {
AclRuleVO input = AclRuleVO.builder()