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 adbeb772f fix(message): reject negative queue coordinates (#2561)
adbeb772f is described below

commit adbeb772fac46627cc80ed8144b4b409884852ad
Author: yyqdbngt <[email protected]>
AuthorDate: Tue Aug 25 17:35:56 2026 +0800

    fix(message): reject negative queue coordinates (#2561)
---
 .../rocketmq/studio/instance/message/MessageService.java |  6 ++++++
 .../studio/instance/message/MessageServiceTest.java      | 16 ++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git 
a/server/src/main/java/org/apache/rocketmq/studio/instance/message/MessageService.java
 
b/server/src/main/java/org/apache/rocketmq/studio/instance/message/MessageService.java
index e707d7dd6..5a185795d 100644
--- 
a/server/src/main/java/org/apache/rocketmq/studio/instance/message/MessageService.java
+++ 
b/server/src/main/java/org/apache/rocketmq/studio/instance/message/MessageService.java
@@ -91,6 +91,12 @@ public class MessageService {
         if (!StringUtils.hasText(brokerName)) {
             throw new BusinessException(400, "brokerName is required");
         }
+        if (queueId < 0) {
+            throw new BusinessException(400, "queueId must not be negative");
+        }
+        if (offset < 0) {
+            throw new BusinessException(400, "offset must not be negative");
+        }
         return messageProvider.pullMessageAtOffset(instanceId, topic, 
brokerName, queueId, offset);
     }
 
diff --git 
a/server/src/test/java/org/apache/rocketmq/studio/instance/message/MessageServiceTest.java
 
b/server/src/test/java/org/apache/rocketmq/studio/instance/message/MessageServiceTest.java
index 2c7a9bfc8..7c3ef6c11 100644
--- 
a/server/src/test/java/org/apache/rocketmq/studio/instance/message/MessageServiceTest.java
+++ 
b/server/src/test/java/org/apache/rocketmq/studio/instance/message/MessageServiceTest.java
@@ -27,6 +27,22 @@ import static org.mockito.Mockito.when;
 
 class MessageServiceTest {
 
+    @Test
+    void rejectsNegativeQueueCoordinatesBeforeCallingProvider() {
+        MessageProvider provider = mock(MessageProvider.class);
+        MessageService service = new MessageService(provider, 
mock(InstanceProviderRegistry.class),
+                mock(QueryHistoryService.class));
+
+        assertThatThrownBy(() -> service.pullMessageAtOffset("instance-a", 
"TopicA", "broker-a", -1, 0))
+                .isInstanceOf(BusinessException.class)
+                .hasMessage("queueId must not be negative");
+        assertThatThrownBy(() -> service.pullMessageAtOffset("instance-a", 
"TopicA", "broker-a", 0, -1))
+                .isInstanceOf(BusinessException.class)
+                .hasMessage("offset must not be negative");
+
+        verifyNoInteractions(provider);
+    }
+
     @Test
     void rejectsKeyQueryWithoutTopicBeforeCallingProvider() {
         MessageProvider provider = mock(MessageProvider.class);

Reply via email to