mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
refactor
This commit is contained in:
@@ -3,12 +3,11 @@ package com.alibaba.druid.filter.wall;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Properties;
|
||||
|
||||
import com.alibaba.druid.DruidRuntimeException;
|
||||
import com.alibaba.druid.filter.FilterAdapter;
|
||||
import com.alibaba.druid.filter.FilterChain;
|
||||
import com.alibaba.druid.filter.wall.spi.MySqlWallProvider;
|
||||
import com.alibaba.druid.filter.wall.spi.MySqlWallVisitor;
|
||||
import com.alibaba.druid.filter.wall.spi.OracleWallProvider;
|
||||
import com.alibaba.druid.filter.wall.spi.OracleWallVisitor;
|
||||
import com.alibaba.druid.proxy.jdbc.CallableStatementProxy;
|
||||
import com.alibaba.druid.proxy.jdbc.ConnectionProxy;
|
||||
import com.alibaba.druid.proxy.jdbc.DataSourceProxy;
|
||||
@@ -19,13 +18,45 @@ import com.alibaba.druid.util.JdbcUtils;
|
||||
|
||||
public class WallFilter extends FilterAdapter {
|
||||
|
||||
private boolean inited = false;
|
||||
|
||||
private WallProvider provider;
|
||||
|
||||
private boolean loadDefault;
|
||||
|
||||
private boolean loadExtend;
|
||||
|
||||
@Override
|
||||
public void init(DataSourceProxy dataSource) {
|
||||
this.dataSource = dataSource;
|
||||
|
||||
provider = createWallProvider(dataSource.getDbType());
|
||||
|
||||
this.inited = true;
|
||||
}
|
||||
|
||||
public boolean isLoadDefault() {
|
||||
return loadDefault;
|
||||
}
|
||||
|
||||
public void checkInit() {
|
||||
if (inited) {
|
||||
throw new DruidRuntimeException("wall filter is inited");
|
||||
}
|
||||
}
|
||||
|
||||
public void setLoadDefault(boolean loadDefault) {
|
||||
checkInit();
|
||||
this.loadDefault = loadDefault;
|
||||
}
|
||||
|
||||
public boolean isLoadExtend() {
|
||||
return loadExtend;
|
||||
}
|
||||
|
||||
public void setLoadExtend(boolean loadExtend) {
|
||||
checkInit();
|
||||
this.loadExtend = loadExtend;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -100,9 +131,9 @@ public class WallFilter extends FilterAdapter {
|
||||
check(connection, sql);
|
||||
return chain.connection_prepareCall(connection, sql, resultSetType, resultSetConcurrency, resultSetHoldability);
|
||||
}
|
||||
|
||||
////////////////
|
||||
|
||||
|
||||
// //////////////
|
||||
|
||||
@Override
|
||||
public boolean statement_execute(FilterChain chain, StatementProxy statement, String sql) throws SQLException {
|
||||
check(statement.getConnectionProxy(), sql);
|
||||
@@ -129,7 +160,7 @@ public class WallFilter extends FilterAdapter {
|
||||
check(statement.getConnectionProxy(), sql);
|
||||
return chain.statement_execute(statement, sql, columnNames);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ResultSetProxy statement_executeQuery(FilterChain chain, StatementProxy statement, String sql)
|
||||
throws SQLException {
|
||||
@@ -170,26 +201,14 @@ public class WallFilter extends FilterAdapter {
|
||||
|
||||
public WallProvider createWallProvider(String dbType) {
|
||||
if (JdbcUtils.MYSQL.equals(dbType)) {
|
||||
return new MySqlWallProvider();
|
||||
return new MySqlWallProvider(this.loadDefault, this.loadExtend);
|
||||
}
|
||||
|
||||
|
||||
if (JdbcUtils.ORACLE.equals(dbType)) {
|
||||
return new OracleWallProvider();
|
||||
return new OracleWallProvider(this.loadDefault, this.loadExtend);
|
||||
}
|
||||
|
||||
throw new IllegalStateException("dbType not support : " + dbType);
|
||||
}
|
||||
|
||||
public WallVisitor createWallVisitor(String dbType) throws SQLException {
|
||||
if (JdbcUtils.ORACLE.equals(dbType)) {
|
||||
return new OracleWallVisitor();
|
||||
}
|
||||
|
||||
if (JdbcUtils.MYSQL.equals(dbType)) {
|
||||
return new MySqlWallVisitor();
|
||||
}
|
||||
|
||||
throw new SQLException("dbType not support : " + dbType);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package com.alibaba.druid.filter.wall;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.parser.NotAllowCommentException;
|
||||
@@ -18,7 +20,13 @@ public abstract class WallProvider {
|
||||
|
||||
private int whileListMaxSize = 1024;
|
||||
|
||||
private int whiteSqlMaxLength = 1024; // 1k
|
||||
private int whiteSqlMaxLength = 1024; // 1k
|
||||
|
||||
protected final Set<String> permitFunctions = new HashSet<String>();
|
||||
protected final Set<String> permitTables = new HashSet<String>();
|
||||
protected final Set<String> permitSchemas = new HashSet<String>();
|
||||
protected final Set<String> permitNames = new HashSet<String>();
|
||||
protected final Set<String> permitObjects = new HashSet<String>();
|
||||
|
||||
public synchronized void addWhiteSql(String sql) {
|
||||
if (whiteList == null) {
|
||||
@@ -98,4 +106,25 @@ public abstract class WallProvider {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public Set<String> getPermitFunctions() {
|
||||
return permitFunctions;
|
||||
}
|
||||
|
||||
public Set<String> getPermitTables() {
|
||||
return permitTables;
|
||||
}
|
||||
|
||||
public Set<String> getPermitSchemas() {
|
||||
return permitSchemas;
|
||||
}
|
||||
|
||||
public Set<String> getPermitNames() {
|
||||
return permitNames;
|
||||
}
|
||||
|
||||
public Set<String> getPermitObjects() {
|
||||
return permitObjects;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,26 +1,19 @@
|
||||
package com.alibaba.druid.filter.wall;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLObject;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public interface WallVisitor extends SQLASTVisitor {
|
||||
|
||||
WallProvider getWallProvider();
|
||||
|
||||
List<Violation> getViolations();
|
||||
|
||||
Set<String> getPermitFunctions();
|
||||
|
||||
Set<String> getPermitSchemas();
|
||||
|
||||
Set<String> getPermitTables();
|
||||
|
||||
boolean containsPermitTable(String name);
|
||||
|
||||
|
||||
boolean containsPermitObjects(String name);
|
||||
|
||||
Set<String> getPermitNames();
|
||||
|
||||
String toSQL(SQLObject obj);
|
||||
}
|
||||
|
||||
@@ -5,9 +5,39 @@ import com.alibaba.druid.filter.wall.WallVisitor;
|
||||
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
|
||||
import com.alibaba.druid.sql.parser.SQLStatementParser;
|
||||
|
||||
|
||||
public class MySqlWallProvider extends WallProvider {
|
||||
|
||||
public MySqlWallProvider(){
|
||||
this(true, true);
|
||||
}
|
||||
|
||||
public MySqlWallProvider(boolean loadDefault, boolean loadExtend){
|
||||
if (loadDefault) {
|
||||
loadDefault();
|
||||
}
|
||||
|
||||
if (loadExtend) {
|
||||
loadExtend();
|
||||
}
|
||||
}
|
||||
|
||||
public void loadExtend() {
|
||||
WallVisitorUtils.loadResource(this.permitNames, "META-INF/druid-filter-wall-permit-name-mysql.txt");
|
||||
WallVisitorUtils.loadResource(this.permitSchemas, "META-INF/druid-filter-wall-permit-schema-mysql.txt");
|
||||
WallVisitorUtils.loadResource(this.permitFunctions, "META-INF/druid-filter-wall-permit-function-mysql.txt");
|
||||
WallVisitorUtils.loadResource(this.permitTables, "META-INF/druid-filter-wall-permit-table-mysql.txt");
|
||||
WallVisitorUtils.loadResource(this.permitObjects, "META-INF/druid-filter-wall-permit-object-mysql.txt");
|
||||
}
|
||||
|
||||
public void loadDefault() {
|
||||
WallVisitorUtils.loadResource(this.permitNames, "META-INF/druid-filter-wall-permit-name-mysql-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitSchemas, "META-INF/druid-filter-wall-permit-schema-mysql-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitFunctions,
|
||||
"META-INF/druid-filter-wall-permit-function-mysql-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitTables, "META-INF/druid-filter-wall-permit-table-mysql-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitObjects, "META-INF/druid-filter-wall-permit-object-mysql-default.txt");
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLStatementParser createParser(String sql) {
|
||||
return new MySqlStatementParser(sql);
|
||||
@@ -15,7 +45,7 @@ public class MySqlWallProvider extends WallProvider {
|
||||
|
||||
@Override
|
||||
public WallVisitor createWallVisitor() {
|
||||
return new MySqlWallVisitor();
|
||||
return new MySqlWallVisitor(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package com.alibaba.druid.filter.wall.spi;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.alibaba.druid.filter.wall.IllegalSQLObjectViolation;
|
||||
import com.alibaba.druid.filter.wall.Violation;
|
||||
import com.alibaba.druid.filter.wall.WallProvider;
|
||||
import com.alibaba.druid.filter.wall.WallVisitor;
|
||||
import com.alibaba.druid.sql.SQLUtils;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
@@ -35,67 +34,20 @@ import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitorAdapter;
|
||||
|
||||
public class MySqlWallVisitor extends MySqlASTVisitorAdapter implements WallVisitor, MySqlASTVisitor {
|
||||
|
||||
private final Set<String> permitFunctions = new HashSet<String>();
|
||||
private final Set<String> permitTables = new HashSet<String>();
|
||||
private final Set<String> permitSchemas = new HashSet<String>();
|
||||
private final Set<String> permitNames = new HashSet<String>();
|
||||
private final Set<String> permitObjects = new HashSet<String>();
|
||||
private final MySqlWallProvider provider;
|
||||
private final List<Violation> violations = new ArrayList<Violation>();
|
||||
|
||||
private final List<Violation> violations;
|
||||
|
||||
public MySqlWallVisitor(){
|
||||
this(new ArrayList<Violation>(), true);
|
||||
public MySqlWallVisitor(MySqlWallProvider provider){
|
||||
this.provider = provider;
|
||||
}
|
||||
|
||||
public MySqlWallVisitor(boolean loadDefault){
|
||||
this(new ArrayList<Violation>(), loadDefault);
|
||||
}
|
||||
|
||||
public MySqlWallVisitor(List<Violation> violations, boolean loadDefault){
|
||||
this.violations = violations;
|
||||
|
||||
if (loadDefault) {
|
||||
loadDefault();
|
||||
}
|
||||
|
||||
WallVisitorUtils.loadResource(this.permitNames, "META-INF/druid-filter-wall-permit-name-mysql.txt");
|
||||
WallVisitorUtils.loadResource(this.permitSchemas, "META-INF/druid-filter-wall-permit-schema-mysql.txt");
|
||||
WallVisitorUtils.loadResource(this.permitFunctions, "META-INF/druid-filter-wall-permit-function-mysql.txt");
|
||||
WallVisitorUtils.loadResource(this.permitTables, "META-INF/druid-filter-wall-permit-table-mysql.txt");
|
||||
WallVisitorUtils.loadResource(this.permitObjects, "META-INF/druid-filter-wall-permit-object-mysql.txt");
|
||||
}
|
||||
|
||||
public void loadDefault() {
|
||||
WallVisitorUtils.loadResource(this.permitNames, "META-INF/druid-filter-wall-permit-name-mysql-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitSchemas, "META-INF/druid-filter-wall-permit-schema-mysql-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitFunctions, "META-INF/druid-filter-wall-permit-function-mysql-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitTables, "META-INF/druid-filter-wall-permit-table-mysql-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitObjects, "META-INF/druid-filter-wall-permit-object-mysql-default.txt");
|
||||
}
|
||||
|
||||
public Set<String> getPermitNames() {
|
||||
return permitNames;
|
||||
}
|
||||
|
||||
public Set<String> getPermitFunctions() {
|
||||
return permitFunctions;
|
||||
}
|
||||
|
||||
public Set<String> getPermitTables() {
|
||||
return permitTables;
|
||||
}
|
||||
|
||||
public Set<String> getPermitSchemas() {
|
||||
return permitSchemas;
|
||||
public WallProvider getWallProvider() {
|
||||
return provider;
|
||||
}
|
||||
|
||||
public boolean containsPermitObjects(String name) {
|
||||
name = name.toLowerCase();
|
||||
return permitObjects.contains(name);
|
||||
}
|
||||
|
||||
public Set<String> getPermitObjects() {
|
||||
return permitObjects;
|
||||
return provider.getPermitObjects().contains(name);
|
||||
}
|
||||
|
||||
public List<Violation> getViolations() {
|
||||
@@ -216,7 +168,7 @@ public class MySqlWallVisitor extends MySqlASTVisitorAdapter implements WallVisi
|
||||
@Override
|
||||
public boolean containsPermitTable(String name) {
|
||||
name = WallVisitorUtils.form(name);
|
||||
return permitTables.contains(name);
|
||||
return provider.getPermitTables().contains(name);
|
||||
}
|
||||
|
||||
public void preVisit(SQLObject x) {
|
||||
@@ -236,4 +188,5 @@ public class MySqlWallVisitor extends MySqlASTVisitorAdapter implements WallVisi
|
||||
violations.add(new IllegalSQLObjectViolation(SQLUtils.toMySqlString(x)));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,9 +5,39 @@ import com.alibaba.druid.filter.wall.WallVisitor;
|
||||
import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser;
|
||||
import com.alibaba.druid.sql.parser.SQLStatementParser;
|
||||
|
||||
|
||||
public class OracleWallProvider extends WallProvider {
|
||||
|
||||
public OracleWallProvider(){
|
||||
this(true, true);
|
||||
}
|
||||
|
||||
public OracleWallProvider(boolean loadDefault, boolean loadExtend){
|
||||
if (loadDefault) {
|
||||
loadDefault();
|
||||
}
|
||||
|
||||
if (loadExtend) {
|
||||
loadExtend();
|
||||
}
|
||||
}
|
||||
|
||||
public void loadExtend() {
|
||||
WallVisitorUtils.loadResource(this.permitNames, "META-INF/druid-filter-wall-permit-name-oracle.txt");
|
||||
WallVisitorUtils.loadResource(this.permitSchemas, "META-INF/druid-filter-wall-permit-schema-oracle.txt");
|
||||
WallVisitorUtils.loadResource(this.permitFunctions, "META-INF/druid-filter-wall-permit-function-oracle.txt");
|
||||
WallVisitorUtils.loadResource(this.permitTables, "META-INF/druid-filter-wall-permit-table-oracle.txt");
|
||||
WallVisitorUtils.loadResource(this.permitObjects, "META-INF/druid-filter-wall-permit-object-oracle.txt");
|
||||
}
|
||||
|
||||
public void loadDefault() {
|
||||
WallVisitorUtils.loadResource(this.permitNames, "META-INF/druid-filter-wall-permit-name-oracle-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitSchemas, "META-INF/druid-filter-wall-permit-schema-oracle-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitFunctions,
|
||||
"META-INF/druid-filter-wall-permit-function-oracle-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitTables, "META-INF/druid-filter-wall-permit-table-oracle-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitObjects, "META-INF/druid-filter-wall-permit-object-oracle-default.txt");
|
||||
}
|
||||
|
||||
@Override
|
||||
public SQLStatementParser createParser(String sql) {
|
||||
return new OracleStatementParser(sql);
|
||||
@@ -15,7 +45,7 @@ public class OracleWallProvider extends WallProvider {
|
||||
|
||||
@Override
|
||||
public WallVisitor createWallVisitor() {
|
||||
return new OracleWallVisitor();
|
||||
return new OracleWallVisitor(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package com.alibaba.druid.filter.wall.spi;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.alibaba.druid.filter.wall.IllegalSQLObjectViolation;
|
||||
import com.alibaba.druid.filter.wall.Violation;
|
||||
import com.alibaba.druid.filter.wall.WallProvider;
|
||||
import com.alibaba.druid.filter.wall.WallVisitor;
|
||||
import com.alibaba.druid.sql.SQLUtils;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
@@ -35,82 +34,16 @@ import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVIsitorAdapter;
|
||||
|
||||
public class OracleWallVisitor extends OracleASTVIsitorAdapter implements WallVisitor {
|
||||
|
||||
private final Set<String> permitFunctions = new HashSet<String>();
|
||||
private final Set<String> permitTables = new HashSet<String>();
|
||||
private final Set<String> permitSchemas = new HashSet<String>();
|
||||
private final Set<String> permitNames = new HashSet<String>();
|
||||
private final Set<String> permitObjects = new HashSet<String>();
|
||||
private OracleWallProvider provider;
|
||||
private final List<Violation> violations = new ArrayList<Violation>();
|
||||
|
||||
private final List<Violation> violations;
|
||||
|
||||
public OracleWallVisitor(){
|
||||
this(new ArrayList<Violation>(), true);
|
||||
}
|
||||
|
||||
public OracleWallVisitor(boolean loadDefault){
|
||||
this(new ArrayList<Violation>(), loadDefault);
|
||||
}
|
||||
|
||||
public OracleWallVisitor(List<Violation> violations, boolean loadDefault){
|
||||
this.violations = violations;
|
||||
|
||||
if (loadDefault) {
|
||||
loadDefault();
|
||||
}
|
||||
|
||||
WallVisitorUtils.loadResource(this.permitNames, "META-INF/druid-filter-wall-permit-name-oracle.txt");
|
||||
WallVisitorUtils.loadResource(this.permitSchemas, "META-INF/druid-filter-wall-permit-schema-oracle.txt");
|
||||
WallVisitorUtils.loadResource(this.permitFunctions, "META-INF/druid-filter-wall-permit-function-oracle.txt");
|
||||
WallVisitorUtils.loadResource(this.permitTables, "META-INF/druid-filter-wall-permit-table-oracle.txt");
|
||||
WallVisitorUtils.loadResource(this.permitObjects, "META-INF/druid-filter-wall-permit-object-oracle.txt");
|
||||
}
|
||||
|
||||
public void loadDefault() {
|
||||
WallVisitorUtils.loadResource(this.permitNames, "META-INF/druid-filter-wall-permit-name-oracle-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitSchemas, "META-INF/druid-filter-wall-permit-schema-oracle-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitFunctions, "META-INF/druid-filter-wall-permit-function-oracle-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitTables, "META-INF/druid-filter-wall-permit-table-oracle-default.txt");
|
||||
WallVisitorUtils.loadResource(this.permitObjects, "META-INF/druid-filter-wall-permit-object-oracle-default.txt");
|
||||
}
|
||||
|
||||
public void addPermitName(String name) {
|
||||
name = name.toLowerCase();
|
||||
permitNames.add(name);
|
||||
}
|
||||
|
||||
public void addPermitFunction(String name) {
|
||||
name = name.toLowerCase();
|
||||
permitFunctions.add(name);
|
||||
}
|
||||
|
||||
public void addPermitTable(String name) {
|
||||
name = name.toLowerCase();
|
||||
permitTables.add(name);
|
||||
public OracleWallVisitor(OracleWallProvider provider){
|
||||
this.provider = provider;
|
||||
}
|
||||
|
||||
public boolean containsPermitObjects(String name) {
|
||||
name = name.toLowerCase();
|
||||
return permitObjects.contains(name);
|
||||
}
|
||||
|
||||
public Set<String> getPermitObjects() {
|
||||
return permitObjects;
|
||||
}
|
||||
|
||||
public Set<String> getPermitNames() {
|
||||
return permitNames;
|
||||
}
|
||||
|
||||
public Set<String> getPermitFunctions() {
|
||||
return permitFunctions;
|
||||
}
|
||||
|
||||
public Set<String> getPermitTables() {
|
||||
return permitTables;
|
||||
}
|
||||
|
||||
public Set<String> getPermitSchemas() {
|
||||
return permitSchemas;
|
||||
return provider.getPermitObjects().contains(name);
|
||||
}
|
||||
|
||||
public List<Violation> getViolations() {
|
||||
@@ -220,7 +153,7 @@ public class OracleWallVisitor extends OracleASTVIsitorAdapter implements WallVi
|
||||
if (name.startsWith("v$") || name.startsWith("v_$")) {
|
||||
return true;
|
||||
}
|
||||
return permitTables.contains(name);
|
||||
return provider.getPermitTables().contains(name);
|
||||
}
|
||||
|
||||
public void preVisit(SQLObject x) {
|
||||
@@ -242,4 +175,9 @@ public class OracleWallVisitor extends OracleASTVIsitorAdapter implements WallVi
|
||||
violations.add(new IllegalSQLObjectViolation(SQLUtils.toMySqlString(x)));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public WallProvider getWallProvider() {
|
||||
return this.provider;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -304,7 +304,7 @@ public class WallVisitorUtils {
|
||||
public static void check(WallVisitor visitor, SQLMethodInvokeExpr x) {
|
||||
String methodName = x.getMethodName();
|
||||
|
||||
if (visitor.getPermitFunctions().contains(methodName.toLowerCase())) {
|
||||
if (visitor.getWallProvider().getPermitFunctions().contains(methodName.toLowerCase())) {
|
||||
visitor.getViolations().add(new IllegalSQLObjectViolation(visitor.toSQL(x)));
|
||||
}
|
||||
|
||||
@@ -322,7 +322,7 @@ public class WallVisitorUtils {
|
||||
|
||||
ownerName = form(ownerName);
|
||||
|
||||
if (visitor.getPermitSchemas().contains(ownerName.toLowerCase())) {
|
||||
if (visitor.getWallProvider().getPermitSchemas().contains(ownerName.toLowerCase())) {
|
||||
visitor.getViolations().add(new IllegalSQLObjectViolation(visitor.toSQL(x)));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user