Consistently handle input format mismatch

This commit is contained in:
Juergen Hoeller
2026-06-22 21:52:18 +02:00
parent bae022a0fc
commit 7de9c8d58a
2 changed files with 9 additions and 5 deletions
@@ -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);
@@ -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);