Skip to content

Commit 32f331f

Browse files
- Added null check so corrupt/older configs on builds with SCM. Signed-off-by: prathamalwayscomeslast <way4hell6@gmail.com>
1 parent e3d8325 commit 32f331f

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

core/src/main/java/jenkins/scm/RunWithSCM.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import edu.umd.cs.findbugs.annotations.CheckForNull;
2828
import edu.umd.cs.findbugs.annotations.NonNull;
29+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
2930
import hudson.model.Job;
3031
import hudson.model.Result;
3132
import hudson.model.Run;
@@ -34,6 +35,7 @@
3435
import hudson.scm.SCM;
3536
import hudson.util.AdaptedIterator;
3637
import java.util.AbstractSet;
38+
import java.util.Collections;
3739
import java.util.HashSet;
3840
import java.util.Iterator;
3941
import java.util.List;
@@ -87,14 +89,25 @@ public interface RunWithSCM<JobT extends Job<JobT, RunT>,
8789
* @return
8890
* can be empty but never null.
8991
*/
92+
@SuppressFBWarnings(value = "DCN_NULLPOINTER_EXCEPTION", justification = "Handles corrupted UnmodifiableCollection from XStream deserialization of older configs")
9093
@Exported
9194
@NonNull default Set<User> getCulprits() {
9295
if (shouldCalculateCulprits()) {
9396
return calculateCulprits();
9497
}
9598

99+
Set<String> ids = getCulpritIds();
100+
96101
return new AbstractSet<>() {
97-
private Set<String> culpritIds = Set.copyOf(getCulpritIds());
102+
private Set<String> culpritIds;
103+
104+
{
105+
try {
106+
culpritIds = (ids == null) ? Collections.emptySet() : Set.copyOf(ids);
107+
} catch (NullPointerException e) {
108+
culpritIds = Collections.emptySet();
109+
}
110+
}
98111

99112
@Override
100113
public Iterator<User> iterator() {

0 commit comments

Comments
 (0)