From 7806c9589f013ea8b329bd4c1e2201de06b2638c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Sat, 17 Mar 2012 19:03:20 +0800 Subject: [PATCH] bug fixed for sql wall --- .../alibaba/druid/filter/wall/WallConfig.java | 22 ++++++++++++++----- .../filter/wall/MySqlWallPermitTableTest.java | 10 ++++++++- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/alibaba/druid/filter/wall/WallConfig.java b/src/main/java/com/alibaba/druid/filter/wall/WallConfig.java index c04b8f0ed5..0f6ef3d14a 100644 --- a/src/main/java/com/alibaba/druid/filter/wall/WallConfig.java +++ b/src/main/java/com/alibaba/druid/filter/wall/WallConfig.java @@ -29,7 +29,7 @@ public class WallConfig { private boolean truncateAllow = false; - private boolean shcemaCheck = true; + private boolean schemaCheck = true; private boolean tableCheck = true; private boolean functionCheck = true; private boolean objectCheck = true; @@ -194,12 +194,12 @@ public class WallConfig { this.mergeAllow = mergeAllow; } - public boolean isShcemaCheck() { - return shcemaCheck; + public boolean isSchemaCheck() { + return schemaCheck; } - public void setShcemaCheck(boolean shcemaCheck) { - this.shcemaCheck = shcemaCheck; + public void setSchemaCheck(boolean schemaCheck) { + this.schemaCheck = schemaCheck; } public boolean isTableCheck() { @@ -257,16 +257,28 @@ public class WallConfig { } public boolean isPermitObjects(String name) { + if (!objectCheck) { + return false; + } + name = WallVisitorUtils.form(name); return permitObjects.contains(name); } public boolean isPermitSchema(String name) { + if (!schemaCheck) { + return false; + } + name = WallVisitorUtils.form(name); return this.permitSchemas.contains(name); } public boolean isPermitFunction(String name) { + if (!functionCheck) { + return false; + } + name = WallVisitorUtils.form(name); return this.permitFunctions.contains(name); } diff --git a/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallPermitTableTest.java b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallPermitTableTest.java index fd0237ac74..56aa4838e7 100644 --- a/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallPermitTableTest.java +++ b/src/test/java/com/alibaba/druid/bvt/filter/wall/MySqlWallPermitTableTest.java @@ -2,6 +2,7 @@ package com.alibaba.druid.bvt.filter.wall; import org.junit.Assert; +import com.alibaba.druid.filter.wall.WallConfig; import com.alibaba.druid.filter.wall.WallUtils; import junit.framework.TestCase; @@ -13,8 +14,15 @@ import junit.framework.TestCase; */ public class MySqlWallPermitTableTest extends TestCase { - public void test_permitTable() throws Exception { + public void test_default() throws Exception { Assert.assertFalse(WallUtils.isValidateMySql("select benchmark( 500000, sha1( 'test' ) )")); } + public void test_allow() throws Exception { + WallConfig config = new WallConfig(); + config.setTableCheck(false); + + Assert.assertTrue(WallUtils.isValidateMySql("select benchmark( 500000, sha1( 'test' ) )", config)); + } + }