From 7de9c8d58aa695694a60bd36f3ba98e628e08cd9 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 22 Jun 2026 21:52:18 +0200 Subject: [PATCH] Consistently handle input format mismatch --- .../springframework/beans/TypeConverterDelegate.java | 12 ++++++++---- .../web/util/HtmlCharacterEntityDecoder.java | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java b/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java index 8455682b949..db804b4a031 100644 --- a/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java +++ b/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java @@ -295,8 +295,13 @@ class TypeConverterDelegate { ClassLoader cl = this.targetObject.getClass().getClassLoader(); try { Class enumValueType = ClassUtils.forName(enumType, cl); - Field enumField = enumValueType.getField(fieldName); - convertedValue = enumField.get(null); + if (enumValueType.isEnum()) { + Field enumField = enumValueType.getField(fieldName); + convertedValue = enumField.get(null); + } + else if (logger.isTraceEnabled()) { + logger.trace("Specified enum class [" + enumType + "] is not a Java enum"); + } } catch (ClassNotFoundException ex) { if (logger.isTraceEnabled()) { @@ -313,8 +318,7 @@ class TypeConverterDelegate { if (convertedValue == currentConvertedValue) { // Try field lookup as fallback: for Java enum or custom enum - // with values defined as static fields. Resulting value still needs - // to be checked, hence we don't return it right away. + // with values defined as static fields. try { Field enumField = requiredType.getField(trimmedValue); ReflectionUtils.makeAccessible(enumField); diff --git a/spring-web/src/main/java/org/springframework/web/util/HtmlCharacterEntityDecoder.java b/spring-web/src/main/java/org/springframework/web/util/HtmlCharacterEntityDecoder.java index 615ff14c571..ba0051246cc 100644 --- a/spring-web/src/main/java/org/springframework/web/util/HtmlCharacterEntityDecoder.java +++ b/spring-web/src/main/java/org/springframework/web/util/HtmlCharacterEntityDecoder.java @@ -124,7 +124,7 @@ class HtmlCharacterEntityDecoder { int value = (!isHexNumberedReference ? Integer.parseInt(getReferenceSubstring(2)) : Integer.parseInt(getReferenceSubstring(3), 16)); - if (value > Character.MAX_CODE_POINT) { + if (value < 0 || value > Character.MAX_CODE_POINT) { return false; } this.decodedMessage.appendCodePoint(value);