From c008dc6a154f77af43d3e04ae16d831ffb283ab9 Mon Sep 17 00:00:00 2001 From: chegar Date: Tue, 7 Nov 2017 17:08:59 +0000 Subject: [PATCH] 8190482: InnocuousThread creation should not require the caller to possess enableContextClassLoaderOverride Reviewed-by: rriggs, mchung --- .../jdk/internal/misc/InnocuousThread.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/java.base/share/classes/jdk/internal/misc/InnocuousThread.java b/src/java.base/share/classes/jdk/internal/misc/InnocuousThread.java index 056350f25c..e62a0321a7 100644 --- a/src/java.base/share/classes/jdk/internal/misc/InnocuousThread.java +++ b/src/java.base/share/classes/jdk/internal/misc/InnocuousThread.java @@ -62,10 +62,16 @@ public final class InnocuousThread extends Thread { * set to the system class loader. */ public static Thread newThread(String name, Runnable target) { - return new InnocuousThread(INNOCUOUSTHREADGROUP, - target, - name, - ClassLoader.getSystemClassLoader()); + return AccessController.doPrivileged( + new PrivilegedAction() { + @Override + public Thread run() { + return new InnocuousThread(INNOCUOUSTHREADGROUP, + target, + name, + ClassLoader.getSystemClassLoader()); + } + }); } /** @@ -80,8 +86,14 @@ public final class InnocuousThread extends Thread { * Returns a new InnocuousThread with null context class loader. */ public static Thread newSystemThread(String name, Runnable target) { - return new InnocuousThread(INNOCUOUSTHREADGROUP, - target, name, null); + return AccessController.doPrivileged( + new PrivilegedAction() { + @Override + public Thread run() { + return new InnocuousThread(INNOCUOUSTHREADGROUP, + target, name, null); + } + }); } private InnocuousThread(ThreadGroup group, Runnable target, String name, ClassLoader tccl) { -- GitLab