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

RongtongJin 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 e38f72c788 [ISSUE #10877] fix(filter): convert boolean string operands 
safely
e38f72c788 is described below

commit e38f72c788d2cda9993fb0d4a913eb28f726b04d
Author: shown <[email protected]>
AuthorDate: Sun Sep 13 08:58:16 2026 +0800

    [ISSUE #10877] fix(filter): convert boolean string operands safely
---
 .../rocketmq/filter/expression/ComparisonExpression.java      |  2 +-
 .../test/java/org/apache/rocketmq/filter/ExpressionTest.java  | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git 
a/filter/src/main/java/org/apache/rocketmq/filter/expression/ComparisonExpression.java
 
b/filter/src/main/java/org/apache/rocketmq/filter/expression/ComparisonExpression.java
index 14fd7045b4..4d25f4cb77 100644
--- 
a/filter/src/main/java/org/apache/rocketmq/filter/expression/ComparisonExpression.java
+++ 
b/filter/src/main/java/org/apache/rocketmq/filter/expression/ComparisonExpression.java
@@ -536,7 +536,7 @@ public abstract class ComparisonExpression extends 
BinaryExpression implements B
             try {
                 if (lc == Boolean.class) {
                     if (convertStringExpressions && rc == String.class) {
-                        lv = Boolean.valueOf((String) lv).booleanValue();
+                        rv = Boolean.valueOf((String) rv);
                     } else {
                         return -1;
                     }
diff --git 
a/filter/src/test/java/org/apache/rocketmq/filter/ExpressionTest.java 
b/filter/src/test/java/org/apache/rocketmq/filter/ExpressionTest.java
index df883458ed..5ea1ae132f 100644
--- a/filter/src/test/java/org/apache/rocketmq/filter/ExpressionTest.java
+++ b/filter/src/test/java/org/apache/rocketmq/filter/ExpressionTest.java
@@ -598,6 +598,17 @@ public class ExpressionTest {
         eval(expression, context, Boolean.FALSE);
     }
 
+    @Test
+    public void testEvaluate_booleanConstantComparedToStringProperty() throws 
Exception {
+        EvaluationContext trueContext = genContext(KeyValue.c("a", "true"));
+        EvaluationContext falseContext = genContext(KeyValue.c("a", "false"));
+
+        eval(genExp("TRUE=a"), trueContext, Boolean.TRUE);
+        eval(genExp("TRUE<>a"), falseContext, Boolean.TRUE);
+        eval(genExp("FALSE=a"), falseContext, Boolean.TRUE);
+        eval(genExp("FALSE<>a"), trueContext, Boolean.TRUE);
+    }
+
     @Test
     public void testEvaluate_equal() throws Exception {
         Expression expression = genExp(equalExpression);

Reply via email to