From d4cc273c312f6ff64f9cf2eb31f1cf8d6c242abf Mon Sep 17 00:00:00 2001 From: Sam Brannen <104798+sbrannen@users.noreply.github.com> Date: Wed, 8 Apr 2026 11:07:15 +0200 Subject: [PATCH] Avoid recursion in ClassFileAnnotationMetadata.resolveTypeName() See gh-36577 --- .../type/classreading/ClassFileAnnotationMetadata.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-core/src/main/java24/org/springframework/core/type/classreading/ClassFileAnnotationMetadata.java b/spring-core/src/main/java24/org/springframework/core/type/classreading/ClassFileAnnotationMetadata.java index e205385ff18..2ddf9844fcd 100644 --- a/spring-core/src/main/java24/org/springframework/core/type/classreading/ClassFileAnnotationMetadata.java +++ b/spring-core/src/main/java24/org/springframework/core/type/classreading/ClassFileAnnotationMetadata.java @@ -226,10 +226,11 @@ final class ClassFileAnnotationMetadata implements AnnotationMetadata { if (type.isPrimitive()) { return type.displayName(); } - if (type.isArray()) { - return resolveTypeName(type.componentType()) + "[]"; + ClassDesc effectiveType = type; + while (effectiveType.isArray()) { + effectiveType = effectiveType.componentType(); } - String packageName = type.packageName(); + String packageName = effectiveType.packageName(); return (packageName.isEmpty() ? type.displayName() : packageName + "." + type.displayName()); }