From 4e3c90a985e329172667f811d75ba2a5e631f856 Mon Sep 17 00:00:00 2001 From: ali dandach Date: Sat, 28 Dec 2024 12:52:23 +0200 Subject: [PATCH] fix: prevent infinite recursion in doWithFields method. --- .../main/java/org/springframework/util/ReflectionUtils.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spring-core/src/main/java/org/springframework/util/ReflectionUtils.java b/spring-core/src/main/java/org/springframework/util/ReflectionUtils.java index ec29a41f6bb1..11a73ffdd003 100644 --- a/spring-core/src/main/java/org/springframework/util/ReflectionUtils.java +++ b/spring-core/src/main/java/org/springframework/util/ReflectionUtils.java @@ -709,7 +709,11 @@ public static void doWithFields(Class clazz, FieldCallback fc) { public static void doWithFields(Class clazz, FieldCallback fc, @Nullable FieldFilter ff) { // Keep backing up the inheritance hierarchy. Class targetClass = clazz; + Set> visitedClasses = new HashSet<>(); do { + if (!visitedClasses.add(targetClass)) { + break; // Avoid infinite recursion + } Field[] fields = getDeclaredFields(targetClass); for (Field field : fields) { if (ff != null && !ff.matches(field)) {