This is an automated email from the ASF dual-hosted git repository.

jinrongtong pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new 5f747f5c2 [ISSUE #6747] Add INNER_MULTI_DISPATCH check, can not 
contains path separator
5f747f5c2 is described below

commit 5f747f5c24efa66f8eedef99ce865c5ae436ed0b
Author: Humkum <[email protected]>
AuthorDate: Tue May 16 08:26:17 2023 +0800

    [ISSUE #6747] Add INNER_MULTI_DISPATCH check, can not contains path 
separator
---
 client/src/main/java/org/apache/rocketmq/client/Validators.java | 9 +++++++++
 store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java | 3 +++
 2 files changed, 12 insertions(+)

diff --git a/client/src/main/java/org/apache/rocketmq/client/Validators.java 
b/client/src/main/java/org/apache/rocketmq/client/Validators.java
index df885c060..77e4bbd23 100644
--- a/client/src/main/java/org/apache/rocketmq/client/Validators.java
+++ b/client/src/main/java/org/apache/rocketmq/client/Validators.java
@@ -17,13 +17,16 @@
 
 package org.apache.rocketmq.client;
 
+import java.io.File;
 import java.util.Properties;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.rocketmq.client.exception.MQClientException;
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.common.TopicConfig;
 import org.apache.rocketmq.common.UtilAll;
 import org.apache.rocketmq.common.constant.PermName;
 import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.topic.TopicValidator;
 import org.apache.rocketmq.remoting.protocol.ResponseCode;
 
@@ -77,6 +80,12 @@ public class Validators {
             throw new MQClientException(ResponseCode.MESSAGE_ILLEGAL,
                 "the message body size over max value, MAX: " + 
defaultMQProducer.getMaxMessageSize());
         }
+
+        String lmqPath = 
msg.getUserProperty(MessageConst.PROPERTY_INNER_MULTI_DISPATCH);
+        if (StringUtils.contains(lmqPath, File.separator)) {
+            throw new MQClientException(ResponseCode.MESSAGE_ILLEGAL,
+                "INNER_MULTI_DISPATCH " + lmqPath + " can not contains " + 
File.separator + " character");
+        }
     }
 
     public static void checkTopic(String topic) throws MQClientException {
diff --git a/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java 
b/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java
index 78d083e2c..695f0e69f 100644
--- a/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java
+++ b/store/src/main/java/org/apache/rocketmq/store/ConsumeQueue.java
@@ -749,6 +749,9 @@ public class ConsumeQueue implements ConsumeQueueInterface, 
FileQueueLifeCycle {
         }
         for (int i = 0; i < queues.length; i++) {
             String queueName = queues[i];
+            if (StringUtils.contains(queueName, File.separator)) {
+                continue;
+            }
             long queueOffset = Long.parseLong(queueOffsets[i]);
             int queueId = request.getQueueId();
             if (this.messageStore.getMessageStoreConfig().isEnableLmq() && 
MixAll.isLmq(queueName)) {

Reply via email to