From 797ca34a340def383a0a8487cb67bd2a94bb82b6 Mon Sep 17 00:00:00 2001 From: "Alexander.Likhachev" Date: Mon, 14 Aug 2023 23:08:53 +0200 Subject: [PATCH] [BT] Use bootstrap classloader as a fallback instead of system classloader Using system classloader may lead to unwanted leakage of classes from the application classpath (like Gradle's ones). #KT-61206 Fixed --- .../kotlin/buildtools/api/SharedApiClassesClassLoader.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/SharedApiClassesClassLoader.kt b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/SharedApiClassesClassLoader.kt index 15798576a6d..65465e62b7e 100644 --- a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/SharedApiClassesClassLoader.kt +++ b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/SharedApiClassesClassLoader.kt @@ -19,7 +19,6 @@ import kotlin.reflect.KClass @JvmName("newInstance") public fun SharedApiClassesClassLoader(): ClassLoader = SharedApiClassesClassLoaderImpl( SharedApiClassesClassLoaderImpl::class.java.classLoader, - ClassLoader.getSystemClassLoader(), SharedApiClassesClassLoaderImpl::class.java.`package`.name, ) @@ -32,9 +31,8 @@ internal fun loadImplementation(cls: KClass, classLoader: ClassLoad private class SharedApiClassesClassLoaderImpl( private val parent: ClassLoader, - fallback: ClassLoader, private val allowedPackage: String, -) : ClassLoader(fallback) { +) : ClassLoader(null) { // `null` parent means that the parent is the bootstrap classloader override fun loadClass(name: String, resolve: Boolean): Class<*> { return if (name.startsWith(allowedPackage)) { parent.loadClass(name)