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 b346e2b4f5..7561104ea2 100644 --- a/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/wall/spi/WallVisitorUtils.java @@ -939,7 +939,9 @@ public class WallVisitorUtils { filterValues.add(((SQLValuableExpr) expr).getValue()); } boolean validate = updateCheckHandler.check(tableName, checkColumn, setValue, filterValues); - visitor.addViolation(new IllegalSQLObjectViolation(ErrorCode.UPDATE_CHECK_FAIL, "update check failed.", visitor.toSQL(x))); + if (!validate) { + visitor.addViolation(new IllegalSQLObjectViolation(ErrorCode.UPDATE_CHECK_FAIL, "update check failed.", visitor.toSQL(x))); + } } else { visitor.addWallUpdateCheckItem(new WallUpdateCheckItem(tableName, checkColumn, valueExpr, filterValueExprList)); } diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/WallUpdateCheckTest.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/WallUpdateCheckTest.java index e86de96985..71a548ef39 100644 --- a/src/test/java/com/alibaba/druid/bvt/filter/wall/WallUpdateCheckTest.java +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/WallUpdateCheckTest.java @@ -46,7 +46,7 @@ public class WallUpdateCheckTest extends TestCase { }); { WallCheckResult result = wallProvider.check("update t_orders set status = 3 where id = 3 and status = 4"); - assertTrue(result.getViolations().size() > 0); + assertTrue(result.getViolations().size() == 0); } assertEquals(0, wallProvider.getWhiteListHitCount()); assertEquals(0, wallProvider.getBlackListHitCount());