Skip to content

Commit 78890e9

Browse files
authored
Reintroduce entitlement check on System.exit (#119757)
1 parent b34e278 commit 78890e9

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public interface EntitlementChecker {
3737

3838
void check$java_lang_Runtime$halt(Class<?> callerClass, Runtime runtime, int status);
3939

40+
void check$java_lang_System$$exit(Class<?> callerClass, int status);
41+
4042
////////////////////
4143
//
4244
// ClassLoader ctor

libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/RestEntitlementsCheckAction.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ static CheckAction alwaysDenied(Runnable action) {
8383
private static final Map<String, CheckAction> checkActions = Map.ofEntries(
8484
entry("runtime_exit", deniedToPlugins(RestEntitlementsCheckAction::runtimeExit)),
8585
entry("runtime_halt", deniedToPlugins(RestEntitlementsCheckAction::runtimeHalt)),
86+
entry("system_exit", deniedToPlugins(RestEntitlementsCheckAction::systemExit)),
8687
entry("create_classloader", forPlugins(RestEntitlementsCheckAction::createClassLoader)),
8788
entry("processBuilder_start", deniedToPlugins(RestEntitlementsCheckAction::processBuilder_start)),
8889
entry("processBuilder_startPipeline", deniedToPlugins(RestEntitlementsCheckAction::processBuilder_startPipeline)),
@@ -153,6 +154,11 @@ private static void runtimeHalt() {
153154
Runtime.getRuntime().halt(123);
154155
}
155156

157+
@SuppressForbidden(reason = "Specifically testing System.exit")
158+
private static void systemExit() {
159+
System.exit(123);
160+
}
161+
156162
private static void createClassLoader() {
157163
try (var classLoader = new URLClassLoader("test", new URL[0], RestEntitlementsCheckAction.class.getClassLoader())) {
158164
logger.info("Created URLClassLoader [{}]", classLoader.getName());

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ public ElasticsearchEntitlementChecker(PolicyManager policyManager) {
5151
policyManager.checkExitVM(callerClass);
5252
}
5353

54+
@Override
55+
public void check$java_lang_System$$exit(Class<?> callerClass, int status) {
56+
policyManager.checkExitVM(callerClass);
57+
}
58+
5459
@Override
5560
public void check$java_lang_ClassLoader$(Class<?> callerClass) {
5661
policyManager.checkCreateClassLoader(callerClass);

0 commit comments

Comments
 (0)