Skip to content

Commit 1bab8d6

Browse files
authored
[8.18] Check entitlements for URLClassLoader.newInstance (elastic#132725) (elastic#133910)
* Check entitlements for URLClassLoader.newInstance (elastic#132725) * fix backport
1 parent 5eeea8c commit 1bab8d6

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

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

126+
void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls, ClassLoader parent);
127+
128+
void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls);
129+
126130
void check$java_security_SecureClassLoader$(Class<?> callerClass);
127131

128132
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
@@ -69,6 +69,20 @@ static void createClassLoader() throws IOException {
6969
}
7070
}
7171

72+
@EntitlementTest(expectedAccess = PLUGINS)
73+
static void createClassLoaderNewInstance1() throws IOException {
74+
try (var classLoader = URLClassLoader.newInstance(new URL[0])) {
75+
// intentionally empty, just let the loader close
76+
}
77+
}
78+
79+
@EntitlementTest(expectedAccess = PLUGINS)
80+
static void createClassLoaderNewInstance2() throws IOException {
81+
try (var classLoader = URLClassLoader.newInstance(new URL[0], RestEntitlementsCheckAction.class.getClassLoader())) {
82+
// intentionally empty, just let the loader close
83+
}
84+
}
85+
7286
@EntitlementTest(expectedAccess = ALWAYS_DENIED)
7387
static void createLogManager() {
7488
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
@@ -186,6 +186,16 @@ public ElasticsearchEntitlementChecker(PolicyManager policyManager) {
186186
policyManager.checkCreateClassLoader(callerClass);
187187
}
188188

189+
@Override
190+
public void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls) {
191+
policyManager.checkCreateClassLoader(callerClass);
192+
}
193+
194+
@Override
195+
public void check$java_net_URLClassLoader$$newInstance(Class<?> callerClass, URL[] urls, ClassLoader parent) {
196+
policyManager.checkCreateClassLoader(callerClass);
197+
}
198+
189199
@Override
190200
public void check$java_security_SecureClassLoader$(Class<?> callerClass) {
191201
policyManager.checkCreateClassLoader(callerClass);

0 commit comments

Comments
 (0)