Skip to content

Commit b7471d8

Browse files
committed
Check entitlements for URLClassLoader.newInstance (#132725)
1 parent 78f9d0b commit b7471d8

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

libs/entitlement/bridge/src/main/java/org/elasticsearch/entitlement/bridge/EntitlementChecker.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ public interface EntitlementChecker {
136136

137137
void check$java_net_URLClassLoader$(Class<?> callerClass, String name, URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory);
138138

139+
void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls, ClassLoader parent);
140+
141+
void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls);
142+
139143
void check$java_security_SecureClassLoader$(Class<?> callerClass);
140144

141145
void check$java_security_SecureClassLoader$(Class<?> callerClass, ClassLoader parent);

libs/entitlement/qa/entitlement-test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/JvmActions.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,20 @@ static void createClassLoader() throws IOException {
7272
}
7373
}
7474

75+
@EntitlementTest(expectedAccess = PLUGINS)
76+
static void createClassLoaderNewInstance1() throws IOException {
77+
try (var classLoader = URLClassLoader.newInstance(new URL[0])) {
78+
// intentionally empty, just let the loader close
79+
}
80+
}
81+
82+
@EntitlementTest(expectedAccess = PLUGINS)
83+
static void createClassLoaderNewInstance2() throws IOException {
84+
try (var classLoader = URLClassLoader.newInstance(new URL[0], RestEntitlementsCheckAction.class.getClassLoader())) {
85+
// intentionally empty, just let the loader close
86+
}
87+
}
88+
7589
@EntitlementTest(expectedAccess = ALWAYS_DENIED)
7690
static void createLogManager() {
7791
new java.util.logging.LogManager() {

libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/ElasticsearchEntitlementChecker.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,16 @@ public ElasticsearchEntitlementChecker(PolicyChecker policyChecker) {
194194
policyChecker.checkCreateClassLoader(callerClass);
195195
}
196196

197+
@Override
198+
public void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls) {
199+
policyChecker.checkCreateClassLoader(callerClass);
200+
}
201+
202+
@Override
203+
public void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls, ClassLoader parent) {
204+
policyChecker.checkCreateClassLoader(callerClass);
205+
}
206+
197207
@Override
198208
public void check$java_security_SecureClassLoader$(Class<?> callerClass) {
199209
policyChecker.checkCreateClassLoader(callerClass);

0 commit comments

Comments
 (0)