bug fixed for sql wall

This commit is contained in:
温少
2012-03-19 07:11:46 +08:00
parent c6ddda9667
commit 3436764820
2 changed files with 18 additions and 1 deletions
@@ -11,6 +11,7 @@ import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
import com.alibaba.druid.sql.ast.statement.SQLDeleteStatement;
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
@@ -180,6 +181,19 @@ public class SQLServerWallVisitor extends SQLServerASTVisitorAdapter implements
return true;
}
public boolean visit(SQLVariantRefExpr x) {
String varName = x.getName();
if (varName == null) {
return false;
}
if (config.isVariantCheck() && varName.startsWith("@@")) {
violations.add(new IllegalSQLObjectViolation(toSQL(x)));
}
return false;
}
@Override
public boolean visit(SQLServerObjectReferenceExpr x) {
if (x.getSchema() != null && config.isPermitSchema(x.getSchema())) {
@@ -18,7 +18,6 @@ import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr;
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
import com.alibaba.druid.sql.ast.expr.SQLBinaryOperator;
import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
import com.alibaba.druid.sql.ast.expr.SQLNCharExpr;
@@ -450,6 +449,10 @@ public class WallVisitorUtils {
if (visitor.getConfig().isPermitSchema(owner)) {
addViolation(visitor, x);
}
if (visitor.getConfig().isPermitObjects(owner)) {
addViolation(visitor, x);
}
}
//if (ownerExpr instanceof SQLPropertyExpr) {