28 lines
1.5 KiB
Diff
28 lines
1.5 KiB
Diff
# UNDF: UNDF-2026-000000163
|
|
--- a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java
|
|
+++ b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java
|
|
@@ -1,6 +1,7 @@
|
|
import java.util.Arrays;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
+import java.util.Collections;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.List;
|
|
@@ -44,6 +45,10 @@ public class DefaultLifecycleExecutionPlanCalculator implements LifecycleExecuti
|
|
@Named
|
|
@Singleton
|
|
public class DefaultLifecycleExecutionPlanCalculator ... {
|
|
+ // CWE-407 fix: precompute a constant Set for O(1) standard-lifecycle lookup.
|
|
+ // Before this patch, calculateLifecycleMappings() called List.of(STANDARD_LIFECYCLES).contains()
|
|
+ // on every invocation — allocating a new List and doing a linear scan each time.
|
|
+ private static final Set<String> STANDARD_LIFECYCLE_IDS =
|
|
+ Collections.unmodifiableSet(new HashSet<>(Arrays.asList(DefaultLifecycles.STANDARD_LIFECYCLES)));
|
|
|
|
@@ -263,7 +267,7 @@ public class DefaultLifecycleExecutionPlanCalculator implements LifecycleExecuti
|
|
LifecycleMappingDelegate delegate;
|
|
- if (List.of(DefaultLifecycles.STANDARD_LIFECYCLES).contains(lifecycle.getId())) {
|
|
+ if (STANDARD_LIFECYCLE_IDS.contains(lifecycle.getId())) {
|
|
delegate = standardDelegate;
|
|
} else {
|
|
delegate = delegates.getOrDefault(lifecycle.getId(), standardDelegate);
|