Skip to content

Commit a61f350

Browse files
authored
Check entitlements for URLClassLoader.newInstance (elastic#132725) (elastic#133909)
1 parent 27c43f3 commit a61f350

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
@@ -134,6 +134,10 @@ public interface EntitlementChecker {
134134

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

137+
void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls, ClassLoader parent);
138+
139+
void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls);
140+
137141
void check$java_security_SecureClassLoader$(Class<?> callerClass);
138142

139143
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/api/ElasticsearchEntitlementChecker.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,16 @@ public ElasticsearchEntitlementChecker(PolicyChecker policyChecker) {
191191
policyChecker.checkCreateClassLoader(callerClass);
192192
}
193193

194+
@Override
195+
public void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls) {
196+
policyChecker.checkCreateClassLoader(callerClass);
197+
}
198+
199+
@Override
200+
public void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls, ClassLoader parent) {
201+
policyChecker.checkCreateClassLoader(callerClass);
202+
}
203+
194204
@Override
195205
public void check$java_security_SecureClassLoader$(Class<?> callerClass) {
196206
policyChecker.checkCreateClassLoader(callerClass);

0 commit comments

Comments
 (0)