From f6c587effe60e2bc0606ab6b7170800ab5499cc9 Mon Sep 17 00:00:00 2001 From: Yanming Zhou Date: Tue, 3 Jun 2025 16:23:42 +0800 Subject: [PATCH] Avoid reversing List collected by `Collector.toList()` to ensure safety >> There are no guarantees on the type, mutability, serializability, or thread-safety of the List returned `Collector.toList()` doesn't guarantee mutability, then passing it to `Collections.reverse()` is not safe. Signed-off-by: Yanming Zhou --- .../org/springframework/data/convert/CustomConversions.java | 2 +- .../data/spel/ExtensionAwareEvaluationContextProvider.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/convert/CustomConversions.java b/src/main/java/org/springframework/data/convert/CustomConversions.java index a950e8705c..1713772a81 100644 --- a/src/main/java/org/springframework/data/convert/CustomConversions.java +++ b/src/main/java/org/springframework/data/convert/CustomConversions.java @@ -124,7 +124,7 @@ public CustomConversions(ConverterConfiguration converterConfiguration) { converterConfiguration.getStoreConversions(), converterConfiguration.getUserConverters()).stream() .filter(this::isSupportedConverter).filter(this::shouldRegister) .map(ConverterRegistrationIntent::getConverterRegistration).map(this::register).distinct() - .collect(Collectors.toList()); + .collect(Collectors.toCollection(ArrayList::new)); Collections.reverse(registeredConverters); diff --git a/src/main/java/org/springframework/data/spel/ExtensionAwareEvaluationContextProvider.java b/src/main/java/org/springframework/data/spel/ExtensionAwareEvaluationContextProvider.java index 2e2a54fc50..f8c1f8cffc 100644 --- a/src/main/java/org/springframework/data/spel/ExtensionAwareEvaluationContextProvider.java +++ b/src/main/java/org/springframework/data/spel/ExtensionAwareEvaluationContextProvider.java @@ -189,7 +189,7 @@ private List toAdapters( return extensions.stream()// .sorted(AnnotationAwareOrderComparator.INSTANCE)// .map(it -> new EvaluationContextExtensionAdapter(it, getOrCreateInformation(it))) // - .collect(Collectors.toList()); + .collect(Collectors.toCollection(ArrayList::new)); } /**