Skip to content

Commit fdf3403

Browse files
committed
Defensively use Class.forName instead of ClassLoader.loadClass
Issue: SPR-17333
1 parent d9e7253 commit fdf3403

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

spring-core/src/main/java/org/springframework/util/ClassUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,15 +272,15 @@ public static Class<?> forName(String name, @Nullable ClassLoader classLoader)
272272
clToUse = getDefaultClassLoader();
273273
}
274274
try {
275-
return (clToUse != null ? clToUse.loadClass(name) : Class.forName(name));
275+
return Class.forName(name, false, clToUse);
276276
}
277277
catch (ClassNotFoundException ex) {
278278
int lastDotIndex = name.lastIndexOf(PACKAGE_SEPARATOR);
279279
if (lastDotIndex != -1) {
280280
String innerClassName =
281281
name.substring(0, lastDotIndex) + INNER_CLASS_SEPARATOR + name.substring(lastDotIndex + 1);
282282
try {
283-
return (clToUse != null ? clToUse.loadClass(innerClassName) : Class.forName(innerClassName));
283+
return Class.forName(innerClassName, false, clToUse);
284284
}
285285
catch (ClassNotFoundException ex2) {
286286
// Swallow - let original exception get through

spring-jcl/src/main/java/org/apache/commons/logging/LogAdapter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,19 @@ final class LogAdapter {
4242
ClassLoader cl = LogAdapter.class.getClassLoader();
4343
try {
4444
// Try Log4j 2.x API
45-
cl.loadClass("org.apache.logging.log4j.spi.ExtendedLogger");
45+
Class.forName("org.apache.logging.log4j.spi.ExtendedLogger", false, cl);
4646
logApi = LogApi.LOG4J;
4747
}
4848
catch (ClassNotFoundException ex1) {
4949
try {
5050
// Try SLF4J 1.7 SPI
51-
cl.loadClass("org.slf4j.spi.LocationAwareLogger");
51+
Class.forName("org.slf4j.spi.LocationAwareLogger", false, cl);
5252
logApi = LogApi.SLF4J_LAL;
5353
}
5454
catch (ClassNotFoundException ex2) {
5555
try {
5656
// Try SLF4J 1.7 API
57-
cl.loadClass("org.slf4j.Logger");
57+
Class.forName("org.slf4j.Logger", false, cl);
5858
logApi = LogApi.SLF4J;
5959
}
6060
catch (ClassNotFoundException ex3) {

0 commit comments

Comments
 (0)