@Override public void visitCompilationUnit(CompilationUnitTree tree) { passwordHashSaltTrees.clear(); this.assignmentExpressionVisitor = new AssignmentExpressionVisitor(context().symbolTable()); tree.accept(assignmentExpressionVisitor); super.visitCompilationUnit(tree); if (containsPasswordHashFunction && !passwordHashSaltTrees.isEmpty()) { passwordHashSaltTrees.forEach(salt -> context().newIssue(this, salt, USE_DEFAULT_SALT_MESSAGE)); } }
private ExpressionTree getAssignedValue(ExpressionTree value) { Symbol valueSymbol = context().symbolTable().getSymbol(value); return assignmentExpressionVisitor .getUniqueAssignedValue(valueSymbol) .orElse(value); }
Optional<ExpressionTree> from(String code) throws Exception { CompilationUnitTree tree = parse(code, PHPLexicalGrammar.COMPILATION_UNIT); SymbolTable symbolTable = SymbolTableImpl.create(tree); AssignmentExpressionVisitor assignmentExpressionVisitor = new AssignmentExpressionVisitor(symbolTable); tree.accept(assignmentExpressionVisitor); IdentifierTree var = ((SymbolTableImpl) symbolTable).getSymbols(name).get(0).declaration(); Symbol symbol = symbolTable.getSymbol(var); return assignmentExpressionVisitor.getUniqueAssignedValue(symbol); } }
private ExpressionTree getAssignedValue(ExpressionTree value) { Symbol valueSymbol = context().symbolTable().getSymbol(value); return assignmentExpressionVisitor .getUniqueAssignedValue(valueSymbol) .orElse(value); }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { passwordHashSaltTrees.clear(); this.assignmentExpressionVisitor = new AssignmentExpressionVisitor(context().symbolTable()); tree.accept(assignmentExpressionVisitor); super.visitCompilationUnit(tree); if (containsPasswordHashFunction && !passwordHashSaltTrees.isEmpty()) { passwordHashSaltTrees.forEach(salt -> context().newIssue(this, salt, USE_DEFAULT_SALT_MESSAGE)); } }
private boolean hasEmptyValue(ExpressionTree expression) { if (isEmptyLiteral(expression)) { return true; } else if (expression.is(Kind.VARIABLE_IDENTIFIER)) { Symbol expressionSymbol = context().symbolTable().getSymbol(expression); return assignmentExpressionVisitor .getUniqueAssignedValue(expressionSymbol) .map(EmptyDatabasePasswordCheck::isEmptyLiteral) .orElse(false); } return false; }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { assignmentExpressionVisitor = new AssignmentExpressionVisitor(context().symbolTable()); tree.accept(assignmentExpressionVisitor); super.visitCompilationUnit(tree); }
private ExpressionTree getAssignedValue(ExpressionTree value) { if (value.is(Tree.Kind.VARIABLE_IDENTIFIER)) { Symbol valueSymbol = context().symbolTable().getSymbol(value); return assignmentExpressionVisitor .getUniqueAssignedValue(valueSymbol) .orElse(value); } return value; } }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { assignmentExpressionVisitor = new AssignmentExpressionVisitor(context().symbolTable()); tree.accept(assignmentExpressionVisitor); super.visitCompilationUnit(tree); }
private boolean hasEmptyValue(ExpressionTree expression) { if (isEmptyLiteral(expression)) { return true; } else if (expression.is(Kind.VARIABLE_IDENTIFIER)) { Symbol expressionSymbol = context().symbolTable().getSymbol(expression); return assignmentExpressionVisitor .getUniqueAssignedValue(expressionSymbol) .map(EmptyDatabasePasswordCheck::isEmptyLiteral) .orElse(false); } return false; }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { this.assignmentExpressionVisitor = new AssignmentExpressionVisitor(context().symbolTable()); tree.accept(assignmentExpressionVisitor); super.visitCompilationUnit(tree); } }
private ExpressionTree getAssignedValue(ExpressionTree value) { if (value.is(Tree.Kind.VARIABLE_IDENTIFIER)) { Symbol valueSymbol = context().symbolTable().getSymbol(value); return assignmentExpressionVisitor .getUniqueAssignedValue(valueSymbol) .orElse(value); } return value; } }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { this.assignmentExpressionVisitor = new AssignmentExpressionVisitor(context().symbolTable()); tree.accept(assignmentExpressionVisitor); super.visitCompilationUnit(tree); }
private ExpressionTree getAssignedValue(ExpressionTree value) { if (value.is(Tree.Kind.VARIABLE_IDENTIFIER)) { Symbol valueSymbol = context().symbolTable().getSymbol(value); return assignmentExpressionVisitor .getUniqueAssignedValue(valueSymbol) .orElse(value); } return value; } }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { this.assignmentExpressionVisitor = new AssignmentExpressionVisitor(context().symbolTable()); tree.accept(assignmentExpressionVisitor); super.visitCompilationUnit(tree); }
private boolean lessThanMinKeyLength(ExpressionTree keySize) { if (keySize.is(Kind.NUMERIC_LITERAL)) { LiteralTree literal = (LiteralTree) keySize; int size = Integer.parseInt(literal.value()); return size < MIN_KEY_LENGTH; } else if (keySize.is(Kind.VARIABLE_IDENTIFIER)) { Symbol keySizeSymbol = context().symbolTable().getSymbol(keySize); return assignmentExpressionVisitor.getUniqueAssignedValue(keySizeSymbol) .map(this::lessThanMinKeyLength) .orElse(false); } return false; }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { assignmentExpressionVisitor = new AssignmentExpressionVisitor(context().symbolTable()); tree.accept(assignmentExpressionVisitor); super.visitCompilationUnit(tree); }
private ExpressionTree getAssignedValue(ExpressionTree value) { if (value.is(Tree.Kind.VARIABLE_IDENTIFIER)) { Symbol valueSymbol = context().symbolTable().getSymbol(value); return assignmentExpressionVisitor .getUniqueAssignedValue(valueSymbol) .orElse(value); } return value; }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { assignmentExpressionVisitor = new AssignmentExpressionVisitor(context().symbolTable()); tree.accept(assignmentExpressionVisitor); super.visitCompilationUnit(tree); }
private ExpressionTree getAssignedValue(ExpressionTree value) { if (value.is(Tree.Kind.VARIABLE_IDENTIFIER)) { Symbol valueSymbol = context().symbolTable().getSymbol(value); return assignmentExpressionVisitor .getUniqueAssignedValue(valueSymbol) .orElse(value); } return value; }