8190482: InnocuousThread creation should not require the caller to possess enableContextClassLoaderOverride

Reviewed-by: rriggs, mchung
This commit is contained in:
Chris Hegarty 2017-11-07 17:08:59 +00:00
parent 018138a79c
commit c5c047de47

View File

@ -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<Thread>() {
@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<Thread>() {
@Override
public Thread run() {
return new InnocuousThread(INNOCUOUSTHREADGROUP,
target, name, null);
}
});
}
private InnocuousThread(ThreadGroup group, Runnable target, String name, ClassLoader tccl) {