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);