Skip to content

Commit dfbc877

Browse files
authored
[JENKINS-75184] CredentialsMatcher fail with ECR Security Token (#977)
Add a try catch block in CredentialsMatcher implementation when invoke UsernamePasswordCredentials#getPassword method to handle those implementations that perform some operations, like an HTTP call, for which throw an exception.
1 parent ec4062c commit dfbc877

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

src/main/java/com/cloudbees/jenkins/plugins/bitbucket/impl/credentials/BitbucketOAuthCredentialMatcher.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.cloudbees.plugins.credentials.Credentials;
2828
import com.cloudbees.plugins.credentials.CredentialsMatcher;
2929
import com.cloudbees.plugins.credentials.common.UsernamePasswordCredentials;
30+
import hudson.util.Secret;
3031
import java.util.logging.Level;
3132
import java.util.logging.Logger;
3233

@@ -56,15 +57,19 @@ public boolean matches(Credentials item) {
5657
return false;
5758
}
5859

59-
if (item.getClass().getName().equals("com.cloudbees.jenkins.plugins.amazonecr.AmazonECSRegistryCredential")) {
60-
return false;
61-
}
62-
6360
try {
6461
UsernamePasswordCredentials usernamePasswordCredential = ((UsernamePasswordCredentials) item);
6562
String username = usernamePasswordCredential.getUsername();
63+
String password;
64+
try {
65+
password = Secret.toString(usernamePasswordCredential.getPassword());
66+
} catch (Exception e) {
67+
// JENKINS-75184
68+
return false;
69+
}
70+
6671
boolean isEMail = username.contains(".") && username.contains("@");
67-
boolean validSecretLength = usernamePasswordCredential.getPassword().getPlainText().length() == CLIENT_SECRET_LENGTH;
72+
boolean validSecretLength = password.length() == CLIENT_SECRET_LENGTH;
6873
boolean validKeyLength = username.length() == CLIENT_KEY_LENGTH;
6974

7075
return !isEMail && validKeyLength && validSecretLength;

src/main/java/com/cloudbees/jenkins/plugins/bitbucket/impl/credentials/BitbucketUsernamePasswordCredentialMatcher.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,13 @@ public boolean matches(Credentials item) {
5151

5252
UsernamePasswordCredentials usernamePasswordCredential = ((UsernamePasswordCredentials) item);
5353
String username = usernamePasswordCredential.getUsername();
54-
String password = Secret.toString(usernamePasswordCredential.getPassword());
54+
String password;
55+
try {
56+
password = Secret.toString(usernamePasswordCredential.getPassword());
57+
} catch (Exception e) {
58+
// JENKINS-75184
59+
return false;
60+
}
5561
return StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password);
5662
}
5763
}

0 commit comments

Comments
 (0)