Skip to content

Commit 7555cb7

Browse files
stephencdaniel-beck
authored andcommitted
[SECURITY-1046]
1 parent 7569bb8 commit 7555cb7

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/main/java/org/jenkinsci/plugin/gitea/ForkPullRequestDiscoveryTrait.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import edu.umd.cs.findbugs.annotations.NonNull;
2727
import hudson.Extension;
28+
import hudson.Util;
2829
import hudson.util.ListBoxModel;
2930
import java.util.EnumSet;
3031
import java.util.List;
@@ -286,7 +287,7 @@ public TrustContributors() {
286287
@Override
287288
protected boolean checkTrusted(@NonNull GiteaSCMSourceRequest request, @NonNull PullRequestSCMHead head) {
288289
return !head.getOrigin().equals(SCMHeadOrigin.DEFAULT)
289-
&& request.getCollaboratorNames().contains(head.getOriginOwner());
290+
&& Util.fixNull(request.getCollaboratorNames()).contains(head.getOriginOwner());
290291
}
291292

292293
/**

src/main/java/org/jenkinsci/plugin/gitea/GiteaSCMSource.java

+29
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,35 @@ protected List<Action> retrieveActions(@NonNull SCMHead head, SCMHeadEvent event
462462
return result;
463463
}
464464

465+
@NonNull
466+
@Override
467+
public SCMRevision getTrustedRevision(@NonNull SCMRevision revision, @NonNull TaskListener listener)
468+
throws IOException, InterruptedException {
469+
if (revision instanceof PullRequestSCMRevision) {
470+
PullRequestSCMHead head = (PullRequestSCMHead) revision.getHead();
471+
try (GiteaConnection c = gitea().open()) {
472+
try (GiteaSCMSourceRequest request = new GiteaSCMSourceContext(null, SCMHeadObserver.none())
473+
.withTraits(getTraits())
474+
.newRequest(this, listener)) {
475+
request.setConnection(c);
476+
Set<String> names = new HashSet<>();
477+
for (GiteaUser u: c.fetchCollaborators(giteaRepository)) {
478+
names.add(u.getUsername());
479+
}
480+
request.setCollaboratorNames(names);
481+
if (request.isTrusted(head)) {
482+
return revision;
483+
}
484+
}
485+
PullRequestSCMRevision rev = (PullRequestSCMRevision) revision;
486+
listener.getLogger().format("Loading trusted files from base branch %s at %s rather than %s%n",
487+
head.getTarget().getName(), ((SCMRevisionImpl)rev.getTarget()).getHash(), rev.getOrigin().getHash());
488+
return rev.getTarget();
489+
}
490+
}
491+
return revision;
492+
}
493+
465494
@NonNull
466495
@Override
467496
public SCM build(@NonNull SCMHead head, SCMRevision revision) {

0 commit comments

Comments
 (0)