On Tue, 22 Jun 2021 20:08:03 GMT, Sean Coffey <coff...@openjdk.org> wrote:
Sufficient permissions missing if this code was ever to run with
SecurityManager.
Cleanest approach appears to be use of InnocuousThread to create the
cleaner/poller threads.
Test case coverage extended to cover the SecurityManager scenario.
Reviewer request: @valeriepeng
Sean Coffey has updated the pull request incrementally with one additional
commit since the last revision:
Move TokenPoller to Runnable
src/java.base/share/lib/security/default.policy line 131:
129: permission java.lang.RuntimePermission
"accessClassInPackage.com.sun.crypto.provider";
130: permission java.lang.RuntimePermission
"accessClassInPackage.jdk.internal.misc";
131: permission java.lang.RuntimePermission
"accessClassInPackage.sun.security.*";
Can we just do necessary changes? I noticed that this file seems to have mixed
style, i.e. some lines are longer than 80 chars and some break into 2 lines
with length less than 80 chars. Since the whole file is mixed, maybe just do
what must be changed.
src/java.base/share/lib/security/default.policy line 142:
140: permission java.security.SecurityPermission
"clearProviderProperties.*";
141: permission java.security.SecurityPermission "removeProviderProperty.*";
142: permission java.security.SecurityPermission
"getProperty.auth.login.defaultCallbackHandler";
Same "avoid unnecessary changes" comment here.
src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java line
952:
950: AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
951: Thread t = InnocuousThread.newSystemThread(
952: "Poller " + getName(),
nit: "Poller " -> "Poller-" (like before)?
src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java line
956:
954: assert t.getContextClassLoader() == null;
955: t.setDaemon(true);
956: t.setPriority(Thread.MIN_PRIORITY);
nit: supply this priority value as an argument to the
InnocuousThread.newSystemThread() call instead?
src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java line
1033:
1031: }
1032: cleaner = new NativeResourceCleaner();
1033: AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
It seems that the AccessController.doPrivileged((PrivilegedAction) () -> {} is
un-necessary? I tried your test without it and test still passes.
src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java line
1039:
1037: assert t.getContextClassLoader() == null;
1038: t.setDaemon(true);
1039: t.setPriority(Thread.MIN_PRIORITY);
nit: supply this priority value as an argument to the
InnocuousThread.newSystemThread() call instead?
src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java line
1212:
1210:
1211: this.token = token;
1212: if (cleaner == null) {
This check seems duplicate to the one in createCleaner() call.
test/jdk/sun/security/pkcs11/Provider/MultipleLogins.java line 56:
54: System.out.println("No NSS config found. Skipping.");
55: return;
56: }
Move this if-check block of code up before the for-loop?
-------------
PR: https://git.openjdk.java.net/jdk17/pull/117