private ExpressionTree getAssignedValue(ExpressionTree value) { Symbol valueSymbol = context().symbolTable().getSymbol(value); return assignmentExpressionVisitor .getUniqueAssignedValue(valueSymbol) .orElse(value); }
private ExpressionTree getAssignedValue(ExpressionTree value) { Symbol valueSymbol = context().symbolTable().getSymbol(value); return assignmentExpressionVisitor .getUniqueAssignedValue(valueSymbol) .orElse(value); }
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; }
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; } }
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; }
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; } }
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; } }
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; }
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; }
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; }
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; }
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; } }
private Optional<ExpressionTree> getKeySize(ExpressionTree config) { if (config.is(Kind.ARRAY_INITIALIZER_FUNCTION, Kind.ARRAY_INITIALIZER_BRACKET) && isRSA((ArrayInitializerTree) config)) { return ((ArrayInitializerTree) config).arrayPairs().stream() .filter(pair -> hasKey(pair, "private_key_bits")) .map(ArrayPairTree::value) .findFirst(); } Symbol configSymbol = context().symbolTable().getSymbol(config); return assignmentExpressionVisitor .getUniqueAssignedValue(configSymbol) .flatMap(this::getKeySize); }
private Optional<ExpressionTree> getKeySize(ExpressionTree config) { if (config.is(Kind.ARRAY_INITIALIZER_FUNCTION, Kind.ARRAY_INITIALIZER_BRACKET) && isRSA((ArrayInitializerTree) config)) { return ((ArrayInitializerTree) config).arrayPairs().stream() .filter(pair -> hasKey(pair, "private_key_bits")) .map(ArrayPairTree::value) .findFirst(); } Symbol configSymbol = context().symbolTable().getSymbol(config); return assignmentExpressionVisitor .getUniqueAssignedValue(configSymbol) .flatMap(this::getKeySize); }
private boolean isTrue(ExpressionTree tree) { if (tree.is(Tree.Kind.BOOLEAN_LITERAL, Tree.Kind.NUMERIC_LITERAL, Tree.Kind.REGULAR_STRING_LITERAL) && CheckUtils.isTrueValue(tree)) { return true; } if (tree.is(Tree.Kind.VARIABLE_IDENTIFIER)) { Symbol symbol = context().symbolTable().getSymbol(tree); Optional<ExpressionTree> uniqueAssignedValue = assignmentExpressionVisitor.getUniqueAssignedValue(symbol); if (uniqueAssignedValue.isPresent()) { ExpressionTree expressionTree = uniqueAssignedValue.get(); return CheckUtils.isTrueValue(expressionTree); } } return false; }
private boolean isTrue(ExpressionTree tree) { if (tree.is(Tree.Kind.BOOLEAN_LITERAL, Tree.Kind.NUMERIC_LITERAL, Tree.Kind.REGULAR_STRING_LITERAL) && CheckUtils.isTrueValue(tree)) { return true; } if (tree.is(Tree.Kind.VARIABLE_IDENTIFIER)) { Symbol symbol = context().symbolTable().getSymbol(tree); Optional<ExpressionTree> uniqueAssignedValue = assignmentExpressionVisitor.getUniqueAssignedValue(symbol); if (uniqueAssignedValue.isPresent()) { ExpressionTree expressionTree = uniqueAssignedValue.get(); return CheckUtils.isTrueValue(expressionTree); } } return false; }
private ExpressionTree sqlServerPassword(ExpressionTree connectionInfo) { if (connectionInfo.is(Kind.ARRAY_INITIALIZER_FUNCTION, Kind.ARRAY_INITIALIZER_BRACKET)) { for (ArrayPairTree arrayPairTree : ((ArrayInitializerTree) connectionInfo).arrayPairs()) { ExpressionTree key = arrayPairTree.key(); if (key != null && key.is(Kind.REGULAR_STRING_LITERAL) && "PWD".equals(trimQuotes((LiteralTree) key))) { return arrayPairTree.value(); } } return null; } Symbol connectionInfoSymbol = context().symbolTable().getSymbol(connectionInfo); return assignmentExpressionVisitor .getUniqueAssignedValue(connectionInfoSymbol) .map(this::sqlServerPassword) .orElse(null); }
private void checkPostgresql(FunctionCallTree functionCall) { SeparatedList<ExpressionTree> arguments = functionCall.arguments(); if (arguments.isEmpty()) { return; } ExpressionTree connectionString = arguments.get(0); Symbol connectionStringSymbol = context().symbolTable().getSymbol(connectionString); connectionString = assignmentExpressionVisitor .getUniqueAssignedValue(connectionStringSymbol) .orElse(connectionString); checkPostgresqlConnectionString(connectionString); }
private void checkPostgresql(FunctionCallTree functionCall) { SeparatedList<ExpressionTree> arguments = functionCall.arguments(); if (arguments.isEmpty()) { return; } ExpressionTree connectionString = arguments.get(0); Symbol connectionStringSymbol = context().symbolTable().getSymbol(connectionString); connectionString = assignmentExpressionVisitor .getUniqueAssignedValue(connectionStringSymbol) .orElse(connectionString); checkPostgresqlConnectionString(connectionString); }
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); } }