Skip to content

Commit

Permalink
Merge pull request #32 from jenkinsci/security-fix
Browse files Browse the repository at this point in the history
Security Issue Fix - SECURITY-3214
  • Loading branch information
ankit-patil-hubs authored Aug 8, 2023
2 parents a35445d + 49eef88 commit f3e0243
Showing 1 changed file with 15 additions and 29 deletions.
44 changes: 15 additions & 29 deletions src/main/java/io/jenkins/plugins/util/CredentialUtil.java
Original file line number Diff line number Diff line change
@@ -1,52 +1,38 @@
package io.jenkins.plugins.util;

import com.cloudbees.plugins.credentials.CredentialsMatchers;
import com.cloudbees.plugins.credentials.CredentialsProvider;
import com.cloudbees.plugins.credentials.common.StandardCredentials;
import com.cloudbees.plugins.credentials.common.StandardListBoxModel;
import com.google.common.collect.Lists;
import hudson.model.Item;
import hudson.model.Run;
import hudson.security.ACL;
import hudson.util.ListBoxModel;
import hudson.util.Secret;

import javax.annotation.Nullable;
import java.util.Collections;
import java.util.List;
import org.jenkinsci.plugins.plaincredentials.StringCredentials;

public class CredentialUtil {

private CredentialUtil() {}

public static List<StandardCredentials> getAllSystemCredentials(@Nullable final Item item) {
List<StandardCredentials> credentials = Lists.newArrayList();
credentials.addAll(getStandardCredentials(item));
return Collections.unmodifiableList(credentials);
}

public static ListBoxModel getAllCredentialsListBoxModel(@Nullable final Item item,
final String credentialId) {
return getCredentialsListBoxModel(credentialId, getAllSystemCredentials(item));
}

private static ListBoxModel getCredentialsListBoxModel(final String credentialId,
final List<StandardCredentials> credentials) {
final StandardListBoxModel result = new StandardListBoxModel();

result.includeEmptyValue();
for (StandardCredentials credential : credentials) {
result.with(credential);
StandardListBoxModel result = new StandardListBoxModel();

Check warning on line 22 in src/main/java/io/jenkins/plugins/util/CredentialUtil.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered line

Line 22 is not covered by tests
if (item == null) {

Check warning on line 23 in src/main/java/io/jenkins/plugins/util/CredentialUtil.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Partially covered line

Line 23 is only partially covered, 2 branches are missing
return result;

Check warning on line 24 in src/main/java/io/jenkins/plugins/util/CredentialUtil.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered line

Line 24 is not covered by tests
}

return result.includeCurrentValue(credentialId);
}

private static List<StringCredentials> getStandardCredentials(@Nullable Item item) {

List<StringCredentials> credList = CredentialsProvider
.lookupCredentials(StringCredentials.class, item, null, Collections.emptyList());

return credList;
else {
if (!item.hasPermission(Item.EXTENDED_READ)

Check warning on line 27 in src/main/java/io/jenkins/plugins/util/CredentialUtil.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Partially covered line

Line 27 is only partially covered, 2 branches are missing
&& !item.hasPermission(CredentialsProvider.USE_ITEM)) {

Check warning on line 28 in src/main/java/io/jenkins/plugins/util/CredentialUtil.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Partially covered line

Line 28 is only partially covered, 2 branches are missing
return result.includeCurrentValue(credentialId);
}
}
return result.includeEmptyValue()

Check warning on line 32 in src/main/java/io/jenkins/plugins/util/CredentialUtil.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered line

Line 32 is not covered by tests
.includeMatchingAs(ACL.SYSTEM, item, StringCredentials.class,

Check warning on line 33 in src/main/java/io/jenkins/plugins/util/CredentialUtil.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered line

Line 33 is not covered by tests
Collections.emptyList(), CredentialsMatchers.always())

Check warning on line 34 in src/main/java/io/jenkins/plugins/util/CredentialUtil.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered line

Line 34 is not covered by tests
.includeCurrentValue(credentialId);

Check warning on line 35 in src/main/java/io/jenkins/plugins/util/CredentialUtil.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered line

Line 35 is not covered by tests
}

public static String getApiKey(String credentialsId, Run<?, ?> run) {
Expand Down

0 comments on commit f3e0243

Please sign in to comment.