From 16d3fe8d39041cf13f001738f2e5770edaa96924 Mon Sep 17 00:00:00 2001 From: kiki Date: Wed, 11 Dec 2013 14:58:47 +0800 Subject: [PATCH] fix SQLBinaryOpExpr split bug && modify wall config --- src/main/java/com/alibaba/druid/sql/SQLUtils.java | 3 ++- src/main/java/com/alibaba/druid/wall/WallConfig.java | 10 +++++----- .../com/alibaba/druid/wall/spi/WallVisitorUtils.java | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/SQLUtils.java b/src/main/java/com/alibaba/druid/sql/SQLUtils.java index d82ea56868..b0f2d969a5 100644 --- a/src/main/java/com/alibaba/druid/sql/SQLUtils.java +++ b/src/main/java/com/alibaba/druid/sql/SQLUtils.java @@ -293,6 +293,8 @@ public class SQLUtils { public static List split(SQLBinaryOpExpr x) { List groupList = new ArrayList(); + groupList.add(x.getRight()); + SQLExpr left = x.getLeft(); for (;;) { if (left instanceof SQLBinaryOpExpr && ((SQLBinaryOpExpr) left).getOperator() == x.getOperator()) { @@ -304,7 +306,6 @@ public class SQLUtils { break; } } - groupList.add(x.getRight()); return groupList; } } diff --git a/src/main/java/com/alibaba/druid/wall/WallConfig.java b/src/main/java/com/alibaba/druid/wall/WallConfig.java index 61d05f39b4..d6d975936a 100644 --- a/src/main/java/com/alibaba/druid/wall/WallConfig.java +++ b/src/main/java/com/alibaba/druid/wall/WallConfig.java @@ -113,18 +113,18 @@ public class WallConfig implements WallConfigMBean { private boolean conditionOpXorAllow = false; private boolean conditionOpBitwseAllow = true; - private boolean caseConditionAllow = false; + private boolean caseConditionConstAllow = false; public WallConfig(){ } - public boolean isCaseConditionAllow() { - return caseConditionAllow; + public boolean isCaseConditionConstAllow() { + return caseConditionConstAllow; } - public void setCaseConditionAllow(boolean caseConditionAllow) { - this.caseConditionAllow = caseConditionAllow; + public void setCaseConditionConstAllow(boolean caseConditionConstAllow) { + this.caseConditionConstAllow = caseConditionConstAllow; } public boolean isConditionDoubleConstAllow() { diff --git a/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java b/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java index 9f24e1a124..3803409e69 100644 --- a/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java @@ -1050,7 +1050,7 @@ public class WallVisitorUtils { Object result = getValue(caseExpr); - if (visitor != null && !visitor.getConfig().isCaseConditionAllow()) { + if (visitor != null && !visitor.getConfig().isCaseConditionConstAllow()) { boolean leftIsName = false; if (x.getParent() instanceof SQLBinaryOpExpr) { SQLExpr left = ((SQLBinaryOpExpr) x.getParent()).getLeft(); @@ -1083,7 +1083,7 @@ public class WallVisitorUtils { if (x instanceof SQLCaseExpr) { - if (visitor != null && !visitor.getConfig().isCaseConditionAllow()) { + if (visitor != null && !visitor.getConfig().isCaseConditionConstAllow()) { SQLCaseExpr caseExpr = (SQLCaseExpr) x; boolean leftIsName = false;