Skip to content

Commit a5e5ac4

Browse files
committed
Fix LANG-1771: Handle malformed input '[String' in getShortCanonicalName
1 parent 66adbd5 commit a5e5ac4

2 files changed

Lines changed: 15 additions & 2 deletions

File tree

src/main/java/org/apache/commons/lang3/ClassUtils.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -496,9 +496,14 @@ private static String getCanonicalName(final String name) {
496496
className = className.substring(dim);
497497
if (className.startsWith("L")) {
498498
className = className.substring(1, className.endsWith(";") ? className.length() - 1 : className.length());
499-
} else if (!className.isEmpty()) {
500-
className = reverseAbbreviationMap.get(className.substring(0, 1));
499+
}
500+
// else if (!className.isEmpty()) {
501+
// className = reverseAbbreviationMap.get(className.substring(0, 1));
502+
// }
503+
else if (!className.isEmpty() && className.length() == 1 && reverseAbbreviationMap.containsKey(className)) {
504+
className = reverseAbbreviationMap.get(className);
501505
}
506+
502507
final StringBuilder canonicalClassNameBuffer = new StringBuilder(className.length() + dim * 2);
503508
canonicalClassNameBuffer.append(className);
504509
for (int i = 0; i < dim; i++) {

src/test/java/org/apache/commons/lang3/ClassUtilsTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,14 @@ public void test_getAllSuperclasses_Class() {
237237
assertNull(ClassUtils.getAllSuperclasses(null));
238238
}
239239

240+
@Test
241+
public void test_getShortCanonicalName_MalformedInput() {
242+
String input = "[String";
243+
String expected = "String[]";
244+
String actual = ClassUtils.getShortCanonicalName(input);
245+
assertEquals(expected, actual);
246+
}
247+
240248
@Test
241249
public void test_getCanonicalName_Class() {
242250
assertEquals("org.apache.commons.lang3.ClassUtils", ClassUtils.getCanonicalName(ClassUtils.class));

0 commit comments

Comments
 (0)