Skip to content

Commit 8699907

Browse files
committed
SONARJAVA-1212 Handle properties
1 parent d507e3f commit 8699907

2 files changed

Lines changed: 22 additions & 3 deletions

File tree

java-checks/src/main/java/org/sonar/java/checks/DeprecatedHashAlgorithmCheck.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.sonar.api.server.rule.RulesDefinition;
2626
import org.sonar.check.Priority;
2727
import org.sonar.check.Rule;
28+
import org.sonar.java.checks.helpers.JavaPropertiesHelper;
2829
import org.sonar.java.checks.methods.AbstractMethodDetection;
2930
import org.sonar.java.checks.methods.MethodMatcher;
3031
import org.sonar.java.checks.methods.TypeCriteria;
@@ -123,8 +124,13 @@ private static String methodName(MethodInvocationTree mit) {
123124
}
124125

125126
private static String algorithm(ExpressionTree invocationArgument) {
126-
if (invocationArgument.is(Tree.Kind.STRING_LITERAL)) {
127-
String algo = LiteralUtils.trimQuotes(((LiteralTree) invocationArgument).value());
127+
ExpressionTree expectedAlgorithm = invocationArgument;
128+
ExpressionTree defaultPropertyValue = JavaPropertiesHelper.retrievedPropertyDefaultValue(invocationArgument);
129+
if (defaultPropertyValue != null) {
130+
expectedAlgorithm = defaultPropertyValue;
131+
}
132+
if (expectedAlgorithm.is(Tree.Kind.STRING_LITERAL)) {
133+
String algo = LiteralUtils.trimQuotes(((LiteralTree) expectedAlgorithm).value());
128134
return algo.replaceAll("-", "");
129135
}
130136
return null;

java-checks/src/test/files/checks/DeprecatedHashAlgorithmCheck.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import java.security.MessageDigest;
22
import java.security.Provider;
3+
import java.util.Properties;
4+
35
import org.apache.commons.codec.digest.DigestUtils;
46
import static org.apache.commons.codec.digest.DigestUtils.md5Hex;
57

68
class A {
7-
void myMethod(String algorithm, Provider provider) {
9+
void myMethod(String algorithm, Provider provider, Properties props) {
810
MessageDigest md = null;
911
md = MessageDigest.getInstance("MD5"); // Noncompliant {{Use a stronger encryption algorithm than MD5.}}
1012
md = MessageDigest.getInstance("SHA-1"); // Noncompliant {{Use a stronger encryption algorithm than SHA-1.}}
@@ -33,6 +35,17 @@ void myMethod(String algorithm, Provider provider) {
3335
md = MessageDigest.getInstance("MD5", provider); // Noncompliant
3436
md = MessageDigest.getInstance("SHA1", "provider"); // Noncompliant
3537
md = MessageDigest.getInstance("sha-1", "provider"); // Noncompliant
38+
39+
String myAlgo = props.getProperty("myCoolAlgo", "SHA1");
40+
41+
md = MessageDigest.getInstance(myAlgo, provider); // Noncompliant
42+
md = MessageDigest.getInstance(getAlgo(), provider);
43+
md = DigestUtils.getDigest(props.getProperty("mySuperOtherAlgo", "SHA-1")); // Noncompliant
44+
md = DigestUtils.getDigest(props.getProperty("mySuperOtherAlgo"));
45+
}
46+
47+
private String getAlgo() {
48+
return null;
3649
}
3750

3851
}

0 commit comments

Comments
 (0)