From 576161d15423f58281e384174d28c9f9be7941a1 Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Sun, 16 May 2021 15:01:01 -0400 Subject: [PATCH 01/10] 8266459: Implement JEP 411: Deprecate the Security Manager for Removal --- make/RunTests.gmk | 2 +- .../classes/java/lang/SecurityManager.java | 46 ++++++++++--------- .../share/classes/java/lang/System.java | 35 ++++++++++++-- .../share/classes/java/lang/Thread.java | 9 +++- .../share/classes/java/lang/ThreadGroup.java | 7 +++ .../java/security/AccessControlContext.java | 6 +++ .../java/security/AccessControlException.java | 6 +++ .../java/security/AccessController.java | 6 +++ .../classes/java/security/DomainCombiner.java | 6 +++ .../share/classes/java/security/Policy.java | 12 +++++ .../classes/java/security/PolicySpi.java | 6 +++ .../java/util/concurrent/Executors.java | 24 ++++++++++ .../classes/javax/security/auth/Subject.java | 24 ++++++++++ .../security/auth/SubjectDomainCombiner.java | 6 +++ .../classes/java/util/logging/LogManager.java | 7 +++ .../classes/java/rmi/RMISecurityManager.java | 8 +++- .../lang/System/AllowSecurityManager.java | 2 +- .../lambda/LogGeneratedClassesTest.java | 3 ++ .../spi/URLStreamHandlerProvider/Basic.java | 6 ++- .../DoPrivAccompliceTest.java | 2 +- .../jdk/test/lib/process/OutputAnalyzer.java | 15 ++++++ 21 files changed, 205 insertions(+), 33 deletions(-) diff --git a/make/RunTests.gmk b/make/RunTests.gmk index 546a85f165994..4c7c5fff5f5b4 100644 --- a/make/RunTests.gmk +++ b/make/RunTests.gmk @@ -769,7 +769,7 @@ define SetupRunJtregTestBody -vmoption:-XX:MaxRAMPercentage=$$($1_JTREG_MAX_RAM_PERCENTAGE) \ -vmoption:-Djava.io.tmpdir="$$($1_TEST_TMP_DIR)" - $1_JTREG_BASIC_OPTIONS += -automatic -ignore:quiet + $1_JTREG_BASIC_OPTIONS += -automatic -ignore:quiet -Djavatest.security.noSecurityManager=true # Make it possible to specify the JIB_DATA_DIR for tests using the # JIB Artifact resolver diff --git a/src/java.base/share/classes/java/lang/SecurityManager.java b/src/java.base/share/classes/java/lang/SecurityManager.java index 45b1431ece2c5..8d04596f95425 100644 --- a/src/java.base/share/classes/java/lang/SecurityManager.java +++ b/src/java.base/share/classes/java/lang/SecurityManager.java @@ -80,36 +80,37 @@ *

* Environments using a security manager will typically set the security * manager at startup. In the JDK implementation, this is done by setting - * the system property {@code java.security.manager} on the command line to - * the class name of the security manager. It can also be set to the empty - * String ("") or the special token "{@code default}" to use the + * the system property {@systemProperty java.security.manager} on the command + * line to the class name of the security manager. It can also be set to the + * empty String ("") or the special token "{@code default}" to use the * default {@code java.lang.SecurityManager}. If a class name is specified, * it must be {@code java.lang.SecurityManager} or a public subclass and have * a public no-arg constructor. The class is loaded by the * {@linkplain ClassLoader#getSystemClassLoader() built-in system class loader} - * if it is not {@code java.lang.SecurityManager}. If the - * {@code java.security.manager} system property is not set, the default value - * is {@code null}, which means a security manager will not be set at startup. + * if it is not {@code java.lang.SecurityManager}. *

* The Java run-time may also allow, but is not required to allow, the security * manager to be set dynamically by invoking the * {@link System#setSecurityManager(SecurityManager) setSecurityManager} method. - * In the JDK implementation, if the Java virtual machine is started with - * the {@code java.security.manager} system property set to the special token - * "{@code disallow}" then a security manager will not be set at startup and - * cannot be set dynamically (the + * In the JDK implementation, the default value of the + * {@systemProperty java.security.manager} system property, if not set, is + * the special token "{@code disallow}". If the Java virtual machine is + * started with the {@systemProperty java.security.manager} system property + * not set or set to "{@code disallow}" then a security manager will not be + * set at startup and cannot be set dynamically (the * {@link System#setSecurityManager(SecurityManager) setSecurityManager} * method will throw an {@code UnsupportedOperationException}). If the - * {@code java.security.manager} system property is not set or is set to the + * {@systemProperty java.security.manager} system property is set to the * special token "{@code allow}", then a security manager will not be set at * startup but can be set dynamically. Finally, if the - * {@code java.security.manager} system property is set to the class name of - * the security manager, or to the empty String ("") or the special token - * "{@code default}", then a security manager is set at startup (as described - * previously) and can also be subsequently replaced (or disabled) dynamically - * (subject to the policy of the currently installed security manager). The - * following table illustrates the behavior of the JDK implementation for the - * different settings of the {@code java.security.manager} system property: + * {@systemProperty java.security.manager} system property is set to the + * class name of the security manager, or to the empty String ("") or the + * special token "{@code default}", then a security manager is set at startup + * (as described previously) and can also be subsequently replaced (or + * disabled) dynamically (subject to the policy of the currently installed + * security manager). The following table illustrates the behavior of the JDK + * implementation for the different settings of the + * {@systemProperty java.security.manager} system property: * *
property value, * the SecurityManager set at startup, @@ -167,8 +168,6 @@ * * *
- *

A future release of the JDK may change the default value of the - * {@code java.security.manager} system property to "{@code disallow}". *

* The current security manager is returned by the * {@link System#getSecurityManager() getSecurityManager} method. @@ -313,7 +312,12 @@ * @see java.security.ProtectionDomain * * @since 1.0 + * @deprecated The Security Manager is deprecated and subject to removal in a + * future release. There is no replacement for the Security Manager. + * See JEP 411 for + * discussion and alternatives. */ +@Deprecated(since="17", forRemoval=true) public class SecurityManager { /* @@ -1084,7 +1088,7 @@ public void checkMulticast(InetAddress maddr) { * @deprecated Use #checkPermission(java.security.Permission) instead * @see #checkPermission(java.security.Permission) checkPermission */ - @Deprecated(since="1.4") + @Deprecated(since="1.4", forRemoval=true) public void checkMulticast(InetAddress maddr, byte ttl) { String host = maddr.getHostAddress(); if (!host.startsWith("[") && host.indexOf(':') != -1) { diff --git a/src/java.base/share/classes/java/lang/System.java b/src/java.base/share/classes/java/lang/System.java index 474188e4077f2..c8bcd551ba3ec 100644 --- a/src/java.base/share/classes/java/lang/System.java +++ b/src/java.base/share/classes/java/lang/System.java @@ -338,10 +338,16 @@ private static void checkIO() { * security manager has been established, then no action is taken and * the method simply returns. * - * @implNote In the JDK implementation, if the Java virtual machine is - * started with the system property {@code java.security.manager} set to - * the special token "{@code disallow}" then the {@code setSecurityManager} - * method cannot be used to set a security manager. + * @implNote In the JDK implementation, the default value of the + * {@systemProperty java.security.manager} system property, if not set, is + * the special token "{@code disallow}". If the Java virtual machine is + * started with the {@systemProperty java.security.manager} system property + * set to the special token "{@code allow}", then a security manager can + * be set dynamically. If the Java virtual machine is started with the + * system property {@systemProperty java.security.manager} not set or set + * to "{@code disallow}" then a security manager cannot be set + * dynamically (the {@code setSecurityManager} method will throw an + * {@code UnsupportedOperationException}). * * @param sm the security manager or {@code null} * @throws SecurityException @@ -353,7 +359,14 @@ private static void checkIO() { * @see #getSecurityManager * @see SecurityManager#checkPermission * @see java.lang.RuntimePermission + * @deprecated This method is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is + * deprecated and subject to removal in a future release. + * Consequently, this method is also deprecated and subject to + * removal. There is no replacement for the Security Manager or this + * method. */ + @Deprecated(since="17", forRemoval=true) public static void setSecurityManager(SecurityManager sm) { if (allowSecurityManager()) { if (security == null) { @@ -419,7 +432,14 @@ public Object run() { * current application, then that security manager is returned; * otherwise, {@code null} is returned. * @see #setSecurityManager + * @deprecated This method is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is + * deprecated and subject to removal in a future release. + * Consequently, this method is also deprecated and subject to + * removal. There is no replacement for the Security Manager or this + * method. */ + @Deprecated(since="17", forRemoval=true) public static SecurityManager getSecurityManager() { if (allowSecurityManager()) { return security; @@ -2148,7 +2168,12 @@ private static void initPhase3() { allowSecurityManager = MAYBE; } } else { - allowSecurityManager = MAYBE; + allowSecurityManager = NEVER; + } + + if (allowSecurityManager != NEVER) { + System.err.println("WARNING: The Security Manager is deprecated" + + " and will be removed in a future release."); } // initializing the system class loader diff --git a/src/java.base/share/classes/java/lang/Thread.java b/src/java.base/share/classes/java/lang/Thread.java index a825a52e35197..d31cec7dbc569 100644 --- a/src/java.base/share/classes/java/lang/Thread.java +++ b/src/java.base/share/classes/java/lang/Thread.java @@ -1424,7 +1424,14 @@ public final boolean isDaemon() { * @throws SecurityException if the current thread is not allowed to * access this thread. * @see SecurityManager#checkAccess(Thread) - */ + * @deprecated This method is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is + * deprecated and subject to removal in a future release. + * Consequently, this method is also deprecated and subject to + * removal. There is no replacement for the Security Manager or this + * method. + */ + @Deprecated(since="17", forRemoval=true) public final void checkAccess() { SecurityManager security = System.getSecurityManager(); if (security != null) { diff --git a/src/java.base/share/classes/java/lang/ThreadGroup.java b/src/java.base/share/classes/java/lang/ThreadGroup.java index 6e9e1873d68f5..57a8fca39bcc0 100644 --- a/src/java.base/share/classes/java/lang/ThreadGroup.java +++ b/src/java.base/share/classes/java/lang/ThreadGroup.java @@ -320,7 +320,14 @@ public final boolean parentOf(ThreadGroup g) { * access this thread group. * @see java.lang.SecurityManager#checkAccess(java.lang.ThreadGroup) * @since 1.0 + * @deprecated This method is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is + * deprecated and subject to removal in a future release. + * Consequently, this method is also deprecated and subject to + * removal. There is no replacement for the Security Manager or this + * method. */ + @Deprecated(since="17", forRemoval=true) public final void checkAccess() { SecurityManager security = System.getSecurityManager(); if (security != null) { diff --git a/src/java.base/share/classes/java/security/AccessControlContext.java b/src/java.base/share/classes/java/security/AccessControlContext.java index 1ca97a08962a8..a710c26074e4e 100644 --- a/src/java.base/share/classes/java/security/AccessControlContext.java +++ b/src/java.base/share/classes/java/security/AccessControlContext.java @@ -75,8 +75,14 @@ * * @author Roland Schemers * @since 1.2 + * @deprecated This class is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is deprecated + * and subject to removal in a future release. Consequently, this class + * is also deprecated and subject to removal. There is no replacement for + * the Security Manager or this class. */ +@Deprecated(since="17", forRemoval=true) public final class AccessControlContext { private ProtectionDomain[] context; diff --git a/src/java.base/share/classes/java/security/AccessControlException.java b/src/java.base/share/classes/java/security/AccessControlException.java index 2cfaea2376361..9181f2de8fb3f 100644 --- a/src/java.base/share/classes/java/security/AccessControlException.java +++ b/src/java.base/share/classes/java/security/AccessControlException.java @@ -39,8 +39,14 @@ * @author Li Gong * @author Roland Schemers * @since 1.2 + * @deprecated This class is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is deprecated + * and subject to removal in a future release. Consequently, this class + * is also deprecated and subject to removal. There is no replacement for + * the Security Manager or this class. */ +@Deprecated(since="17", forRemoval=true) public class AccessControlException extends SecurityException { @java.io.Serial diff --git a/src/java.base/share/classes/java/security/AccessController.java b/src/java.base/share/classes/java/security/AccessController.java index 3f5df34e663a8..9a5c45844a77a 100644 --- a/src/java.base/share/classes/java/security/AccessController.java +++ b/src/java.base/share/classes/java/security/AccessController.java @@ -271,8 +271,14 @@ * @author Li Gong * @author Roland Schemers * @since 1.2 + * @deprecated This class is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is deprecated + * and subject to removal in a future release. Consequently, this class + * is also deprecated and subject to removal. There is no replacement for + * the Security Manager or this class. */ +@Deprecated(since="17", forRemoval=true) public final class AccessController { /** diff --git a/src/java.base/share/classes/java/security/DomainCombiner.java b/src/java.base/share/classes/java/security/DomainCombiner.java index 0e1ccf9112fcb..47c1f2f84dc84 100644 --- a/src/java.base/share/classes/java/security/DomainCombiner.java +++ b/src/java.base/share/classes/java/security/DomainCombiner.java @@ -77,7 +77,13 @@ * @see AccessController * @see AccessControlContext * @since 1.3 + * @deprecated This class is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is deprecated + * and subject to removal in a future release. Consequently, this class + * is also deprecated and subject to removal. There is no replacement for + * the Security Manager or this class. */ +@Deprecated(since="17", forRemoval=true) public interface DomainCombiner { /** diff --git a/src/java.base/share/classes/java/security/Policy.java b/src/java.base/share/classes/java/security/Policy.java index 27f6696fe6005..65142eb7f8ba4 100644 --- a/src/java.base/share/classes/java/security/Policy.java +++ b/src/java.base/share/classes/java/security/Policy.java @@ -83,8 +83,14 @@ * @see java.security.ProtectionDomain * @see java.security.Permission * @see java.security.Security security properties + * @deprecated This class is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is deprecated + * and subject to removal in a future release. Consequently, this class + * is also deprecated and subject to removal. There is no replacement for + * the Security Manager or this class. */ +@Deprecated(since="17", forRemoval=true) public abstract class Policy { /** @@ -810,7 +816,13 @@ public void refresh() { * This represents a marker interface for Policy parameters. * * @since 1.6 + * @deprecated This class is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is + * deprecated and subject to removal in a future release. + * Consequently, this class is also deprecated and subject to removal. + * There is no replacement for the Security Manager or this class. */ + @Deprecated(since="17", forRemoval=true) public static interface Parameters { } /** diff --git a/src/java.base/share/classes/java/security/PolicySpi.java b/src/java.base/share/classes/java/security/PolicySpi.java index b4d759fe8b973..5a872ef5ac617 100644 --- a/src/java.base/share/classes/java/security/PolicySpi.java +++ b/src/java.base/share/classes/java/security/PolicySpi.java @@ -40,8 +40,14 @@ * * * @since 1.6 + * @deprecated This class is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is deprecated + * and subject to removal in a future release. Consequently, this class + * is also deprecated and subject to removal. There is no replacement for + * the Security Manager or this class. */ +@Deprecated(since="17", forRemoval=true) public abstract class PolicySpi { /** diff --git a/src/java.base/share/classes/java/util/concurrent/Executors.java b/src/java.base/share/classes/java/util/concurrent/Executors.java index 759365dfd63fd..9f07b83a747f0 100644 --- a/src/java.base/share/classes/java/util/concurrent/Executors.java +++ b/src/java.base/share/classes/java/util/concurrent/Executors.java @@ -389,7 +389,15 @@ public static ThreadFactory defaultThreadFactory() { * @throws AccessControlException if the current access control * context does not have permission to both get and set context * class loader + * + * @deprecated This method is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is + * deprecated and subject to removal in a future release. + * Consequently, this method is also deprecated and subject to + * removal. There is no replacement for the Security Manager or this + * method. */ + @Deprecated(since="17", forRemoval=true) public static ThreadFactory privilegedThreadFactory() { return new PrivilegedThreadFactory(); } @@ -466,7 +474,15 @@ public static Callable callable(final PrivilegedExceptionAction actio * @param the type of the callable's result * @return a callable object * @throws NullPointerException if callable null + * + * @deprecated This method is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is + * deprecated and subject to removal in a future release. + * Consequently, this method is also deprecated and subject to + * removal. There is no replacement for the Security Manager or this + * method. */ + @Deprecated(since="17", forRemoval=true) public static Callable privilegedCallable(Callable callable) { if (callable == null) throw new NullPointerException(); @@ -492,7 +508,15 @@ public static Callable privilegedCallable(Callable callable) { * @throws AccessControlException if the current access control * context does not have permission to both set and get context * class loader + * + * @deprecated This method is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is + * deprecated and subject to removal in a future release. + * Consequently, this method is also deprecated and subject to + * removal. There is no replacement for the Security Manager or this + * method. */ + @Deprecated(since="17", forRemoval=true) public static Callable privilegedCallableUsingCurrentClassLoader(Callable callable) { if (callable == null) throw new NullPointerException(); diff --git a/src/java.base/share/classes/javax/security/auth/Subject.java b/src/java.base/share/classes/javax/security/auth/Subject.java index 03bc6fe34c21c..2eba514fc7c43 100644 --- a/src/java.base/share/classes/javax/security/auth/Subject.java +++ b/src/java.base/share/classes/javax/security/auth/Subject.java @@ -284,7 +284,15 @@ public boolean isReadOnly() { * * @throws NullPointerException if the provided * {@code AccessControlContext} is {@code null}. + * + * @deprecated This method depends on {@link AccessControlContext} + * which, in conjunction with + * {@linkplain SecurityManager the Security Manager}, is deprecated + * and subject to removal in a future release. However, obtaining a + * Subject is useful independent of the Security Manager, so a + * replacement for this method may be added in a future release. */ + @Deprecated(since="17", forRemoval=true) public static Subject getSubject(final AccessControlContext acc) { java.lang.SecurityManager sm = System.getSecurityManager(); @@ -463,7 +471,15 @@ public static T doAs(final Subject subject, * {@link AuthPermission#AuthPermission(String) * AuthPermission("doAsPrivileged")} permission to invoke * this method. + * + * @deprecated This method is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is + * deprecated and subject to removal in a future release. + * Consequently, this method is also deprecated and subject to + * removal. There is no replacement for the Security Manager or this + * method. */ + @Deprecated(since="17", forRemoval=true) public static T doAsPrivileged(final Subject subject, final java.security.PrivilegedAction action, final java.security.AccessControlContext acc) { @@ -529,7 +545,15 @@ public static T doAsPrivileged(final Subject subject, * {@link AuthPermission#AuthPermission(String) * AuthPermission("doAsPrivileged")} permission to invoke * this method. + * + * @deprecated This method is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is + * deprecated and subject to removal in a future release. + * Consequently, this method is also deprecated and subject to + * removal. There is no replacement for the Security Manager or this + * method. */ + @Deprecated(since="17", forRemoval=true) public static T doAsPrivileged(final Subject subject, final java.security.PrivilegedExceptionAction action, final java.security.AccessControlContext acc) diff --git a/src/java.base/share/classes/javax/security/auth/SubjectDomainCombiner.java b/src/java.base/share/classes/javax/security/auth/SubjectDomainCombiner.java index 32ef8e7be8d42..bc1a64dfdb540 100644 --- a/src/java.base/share/classes/javax/security/auth/SubjectDomainCombiner.java +++ b/src/java.base/share/classes/javax/security/auth/SubjectDomainCombiner.java @@ -39,7 +39,13 @@ * {@code SubjectDomainCombiner}. * * @since 1.4 + * @deprecated This class is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is deprecated + * and subject to removal in a future release. Consequently, this class + * is also deprecated and subject to removal. There is no replacement for + * the Security Manager or this class. */ +@Deprecated(since="17", forRemoval=true) public class SubjectDomainCombiner implements java.security.DomainCombiner { private Subject subject; diff --git a/src/java.logging/share/classes/java/util/logging/LogManager.java b/src/java.logging/share/classes/java/util/logging/LogManager.java index 0e19da8aebb8a..fd8445a4128d4 100644 --- a/src/java.logging/share/classes/java/util/logging/LogManager.java +++ b/src/java.logging/share/classes/java/util/logging/LogManager.java @@ -2441,7 +2441,14 @@ void checkPermission() { * * @throws SecurityException if a security manager exists and if * the caller does not have LoggingPermission("control"). + * @deprecated This method is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is + * deprecated and subject to removal in a future release. + * Consequently, this method is also deprecated and subject to + * removal. There is no replacement for the Security Manager or this + * method. */ + @Deprecated(since="17", forRemoval=true) public void checkAccess() throws SecurityException { checkPermission(); } diff --git a/src/java.rmi/share/classes/java/rmi/RMISecurityManager.java b/src/java.rmi/share/classes/java/rmi/RMISecurityManager.java index 841dc63b0e0e8..9374b8e679f2c 100644 --- a/src/java.rmi/share/classes/java/rmi/RMISecurityManager.java +++ b/src/java.rmi/share/classes/java/rmi/RMISecurityManager.java @@ -53,9 +53,13 @@ * @author Roger Riggs * @author Peter Jones * @since 1.1 - * @deprecated Use {@link SecurityManager} instead. + * @deprecated This class is only useful in conjunction with + * {@linkplain SecurityManager the Security Manager}, which is deprecated + * and subject to removal in a future release. Consequently, this class + * is also deprecated and subject to removal. There is no replacement for + * the Security Manager or this class. */ -@Deprecated +@Deprecated(since="1.8", forRemoval = true) public class RMISecurityManager extends SecurityManager { /** diff --git a/test/jdk/java/lang/System/AllowSecurityManager.java b/test/jdk/java/lang/System/AllowSecurityManager.java index 7d46664e625af..6c2ae4e0a887d 100644 --- a/test/jdk/java/lang/System/AllowSecurityManager.java +++ b/test/jdk/java/lang/System/AllowSecurityManager.java @@ -35,7 +35,7 @@ public class AllowSecurityManager { public static void main(String args[]) throws Exception { String prop = System.getProperty("java.security.manager"); - boolean disallow = "disallow".equals(prop); + boolean disallow = !"allow".equals(prop); try { System.setSecurityManager(new SecurityManager()); if (disallow) { diff --git a/test/jdk/java/lang/invoke/lambda/LogGeneratedClassesTest.java b/test/jdk/java/lang/invoke/lambda/LogGeneratedClassesTest.java index 047c128e9d591..0e591f28624e2 100644 --- a/test/jdk/java/lang/invoke/lambda/LogGeneratedClassesTest.java +++ b/test/jdk/java/lang/invoke/lambda/LogGeneratedClassesTest.java @@ -144,6 +144,7 @@ public void testDumpDirNotExist() throws IOException { "-Djdk.internal.lambda.dumpProxyClasses=notExist", "com.example.TestLambda"); assertEquals(tr.testOutput.stream() + .filter(s -> !s.contains("Security Manager is deprecated")) .filter(s -> s.startsWith("WARNING")) .peek(s -> assertTrue(s.contains("does not exist"))) .count(), @@ -159,6 +160,7 @@ public void testDumpDirIsFile() throws IOException { "-Djdk.internal.lambda.dumpProxyClasses=file", "com.example.TestLambda"); assertEquals(tr.testOutput.stream() + .filter(s -> !s.contains("Security Manager is deprecated")) .filter(s -> s.startsWith("WARNING")) .peek(s -> assertTrue(s.contains("not a directory"))) .count(), @@ -217,6 +219,7 @@ public void testDumpDirNotWritable() throws IOException { "-Djdk.internal.lambda.dumpProxyClasses=readOnly", "com.example.TestLambda"); assertEquals(tr.testOutput.stream() + .filter(s -> !s.contains("Security Manager is deprecated")) .filter(s -> s.startsWith("WARNING")) .peek(s -> assertTrue(s.contains("not writable"))) .count(), diff --git a/test/jdk/java/net/spi/URLStreamHandlerProvider/Basic.java b/test/jdk/java/net/spi/URLStreamHandlerProvider/Basic.java index 9fef04f5b297b..6f8f6bdaabd35 100644 --- a/test/jdk/java/net/spi/URLStreamHandlerProvider/Basic.java +++ b/test/jdk/java/net/spi/URLStreamHandlerProvider/Basic.java @@ -83,8 +83,12 @@ public static void main(String[] args) throws Throwable { viaBadProvider("jerry", SCE); } + static final String SECURITY_MANAGER_DEPRECATED + = "WARNING: The Security Manager is deprecated and will be removed in a future release." + + System.getProperty("line.separator"); static final Consumer KNOWN = r -> { - if (r.exitValue != 0 || !r.output.isEmpty()) + if (r.exitValue != 0 || + (!r.output.isEmpty() && !r.output.equals(SECURITY_MANAGER_DEPRECATED))) throw new RuntimeException(r.output); }; static final Consumer UNKNOWN = r -> { diff --git a/test/jdk/java/security/AccessController/DoPrivAccompliceTest.java b/test/jdk/java/security/AccessController/DoPrivAccompliceTest.java index 2dfd7f37e5929..a004b4afc9d21 100644 --- a/test/jdk/java/security/AccessController/DoPrivAccompliceTest.java +++ b/test/jdk/java/security/AccessController/DoPrivAccompliceTest.java @@ -104,7 +104,7 @@ public static void main(String[] args) throws Exception { ProcessTools.executeTestJava(commands) .shouldHaveExitValue(0) .shouldContain(userName) - .stderrShouldBeEmptyIgnoreVMWarnings(); + .stderrShouldBeEmptyIgnoreWarnings(); createPolicyFile(jarFile2, policy); System.out.println("Created policy for " + jarFile2); diff --git a/test/lib/jdk/test/lib/process/OutputAnalyzer.java b/test/lib/jdk/test/lib/process/OutputAnalyzer.java index 59a30533eafa3..a36c48ce818e7 100644 --- a/test/lib/jdk/test/lib/process/OutputAnalyzer.java +++ b/test/lib/jdk/test/lib/process/OutputAnalyzer.java @@ -149,6 +149,21 @@ public OutputAnalyzer stderrShouldBeEmptyIgnoreVMWarnings() { return this; } + /** + * Verify that the stderr contents of output buffer is empty, + * after filtering out all messages matching "warning" (case insensitive) + * + * @throws RuntimeException + * If stderr was not empty + */ + public OutputAnalyzer stderrShouldBeEmptyIgnoreWarnings() { + if (!getStderr().replaceAll("(?i).*warning.*\\R", "").isEmpty()) { + reportDiagnosticSummary(); + throw new RuntimeException("stderr was not empty"); + } + return this; + } + /** * Verify that the stderr contents of output buffer is empty, * after filtering out the Hotspot deprecation warning messages From 26a54a835e9f84aa528740a7c5c35d07355a8a66 Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Sun, 16 May 2021 15:01:26 -0400 Subject: [PATCH 02/10] manual change before automatic annotating --- src/java.base/share/classes/java/lang/ProcessHandleImpl.java | 5 ++--- .../share/classes/javax/crypto/JceSecurity.java.template | 1 + src/java.base/unix/classes/java/lang/ProcessImpl.java | 3 +-- .../macosx/classes/com/apple/laf/AquaUtilControlSize.java | 5 ++--- test/lib/jdk/test/lib/Platform.java | 1 + test/lib/sun/hotspot/WhiteBox.java | 1 + 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java index 883a15ebb028b..3a05619e5b63e 100644 --- a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java +++ b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java @@ -25,6 +25,7 @@ package java.lang; import java.lang.annotation.Native; +import java.security.AccessController; import java.security.PrivilegedAction; import java.time.Duration; import java.time.Instant; @@ -40,8 +41,6 @@ import java.util.stream.IntStream; import java.util.stream.Stream; -import static java.security.AccessController.doPrivileged; - /** * ProcessHandleImpl is the implementation of ProcessHandle. * @@ -84,7 +83,7 @@ final class ProcessHandleImpl implements ProcessHandle { * The thread pool of "process reaper" daemon threads. */ private static final Executor processReaperExecutor = - doPrivileged((PrivilegedAction) () -> { + AccessController.doPrivileged((PrivilegedAction) () -> { // Initialize ThreadLocalRandom now to avoid using the smaller stack // of the processReaper threads. ThreadLocalRandom.current(); diff --git a/src/java.base/share/classes/javax/crypto/JceSecurity.java.template b/src/java.base/share/classes/javax/crypto/JceSecurity.java.template index a54f794d03ec1..ffc4daaf56a69 100644 --- a/src/java.base/share/classes/javax/crypto/JceSecurity.java.template +++ b/src/java.base/share/classes/javax/crypto/JceSecurity.java.template @@ -73,6 +73,7 @@ import sun.security.util.Debug; * @since 1.4 */ +@SuppressWarnings("removal") final class JceSecurity { private static final Debug debug = Debug.getInstance("jca"); diff --git a/src/java.base/unix/classes/java/lang/ProcessImpl.java b/src/java.base/unix/classes/java/lang/ProcessImpl.java index fbeca9f35fcf5..efce89a079079 100644 --- a/src/java.base/unix/classes/java/lang/ProcessImpl.java +++ b/src/java.base/unix/classes/java/lang/ProcessImpl.java @@ -42,7 +42,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.security.AccessController; -import static java.security.AccessController.doPrivileged; import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; @@ -321,7 +320,7 @@ private ProcessImpl(final byte[] prog, processHandle = ProcessHandleImpl.getInternal(pid); try { - doPrivileged((PrivilegedExceptionAction) () -> { + AccessController.doPrivileged((PrivilegedExceptionAction) () -> { initStreams(fds, forceNullOutputStream); return null; }); diff --git a/src/java.desktop/macosx/classes/com/apple/laf/AquaUtilControlSize.java b/src/java.desktop/macosx/classes/com/apple/laf/AquaUtilControlSize.java index 63ab4383c0eb5..e8e013a31a7c6 100644 --- a/src/java.desktop/macosx/classes/com/apple/laf/AquaUtilControlSize.java +++ b/src/java.desktop/macosx/classes/com/apple/laf/AquaUtilControlSize.java @@ -27,6 +27,7 @@ import java.awt.*; import java.beans.*; +import java.security.AccessController; import javax.swing.*; import javax.swing.border.Border; @@ -39,8 +40,6 @@ import com.apple.laf.AquaUtils.RecyclableSingletonFromDefaultConstructor; import sun.security.action.GetPropertyAction; -import static java.security.AccessController.*; - public class AquaUtilControlSize { protected static final String CLIENT_PROPERTY_KEY = "JComponent.sizeVariant"; protected static final String SYSTEM_PROPERTY_KEY = "swing.component.sizevariant"; @@ -73,7 +72,7 @@ private static JRSUIConstants.Size getSizeFromString(final String name) { } private static Size getDefaultSize() { - final String sizeProperty = doPrivileged(new GetPropertyAction(SYSTEM_PROPERTY_KEY)); + final String sizeProperty = AccessController.doPrivileged(new GetPropertyAction(SYSTEM_PROPERTY_KEY)); final JRSUIConstants.Size size = getSizeFromString(sizeProperty); if (size != null) return size; return JRSUIConstants.Size.REGULAR; diff --git a/test/lib/jdk/test/lib/Platform.java b/test/lib/jdk/test/lib/Platform.java index 912f93113a0aa..599a45d0c7b08 100644 --- a/test/lib/jdk/test/lib/Platform.java +++ b/test/lib/jdk/test/lib/Platform.java @@ -48,6 +48,7 @@ public class Platform { private static final String compiler = privilegedGetProperty("sun.management.compiler"); private static final String testJdk = privilegedGetProperty("test.jdk"); + @SuppressWarnings("removal") private static String privilegedGetProperty(String key) { return AccessController.doPrivileged(( PrivilegedAction) () -> System.getProperty(key)); diff --git a/test/lib/sun/hotspot/WhiteBox.java b/test/lib/sun/hotspot/WhiteBox.java index 32c8f8afc5033..88e98108e370b 100644 --- a/test/lib/sun/hotspot/WhiteBox.java +++ b/test/lib/sun/hotspot/WhiteBox.java @@ -55,6 +55,7 @@ private WhiteBox() {} * untrusted code. */ public synchronized static WhiteBox getWhiteBox() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new WhiteBoxPermission("getInstance")); From eb6c566ff9207974a03a53335e0e697cffcf0950 Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Sun, 16 May 2021 15:01:51 -0400 Subject: [PATCH 03/10] add supresswarnings annotations automatically --- src/demo/share/jfc/J2Ddemo/java2d/Tools.java | 2 +- .../sun/nio/ch/DefaultSelectorProvider.java | 1 + .../jdk/internal/platform/CgroupUtil.java | 4 +- .../sun/nio/ch/DefaultSelectorProvider.java | 1 + .../classes/apple/security/AppleProvider.java | 1 + .../classes/apple/security/KeychainStore.java | 1 + .../classes/java/net/DefaultInterface.java | 1 + .../sun/nio/ch/DefaultSelectorProvider.java | 1 + .../sun/crypto/provider/DHKeyAgreement.java | 1 + .../com/sun/crypto/provider/JceKeyStore.java | 1 + .../provider/SealedObjectForKeyProtector.java | 2 + .../com/sun/crypto/provider/SunJCE.java | 1 + src/java.base/share/classes/java/io/File.java | 25 ++++++++++++ .../classes/java/io/FileInputStream.java | 2 + .../classes/java/io/FileOutputStream.java | 2 + .../share/classes/java/io/FilePermission.java | 1 + .../classes/java/io/ObjectInputFilter.java | 1 + .../classes/java/io/ObjectInputStream.java | 10 ++++- .../classes/java/io/ObjectOutputStream.java | 5 +++ .../classes/java/io/ObjectStreamClass.java | 9 +++++ .../classes/java/io/ObjectStreamField.java | 1 + .../classes/java/io/RandomAccessFile.java | 1 + .../classes/java/lang/CharacterName.java | 2 +- .../share/classes/java/lang/Class.java | 35 +++++++++++++++-- .../share/classes/java/lang/ClassLoader.java | 6 +++ .../classes/java/lang/LiveStackFrame.java | 1 + .../share/classes/java/lang/Module.java | 2 + .../share/classes/java/lang/ModuleLayer.java | 2 + .../share/classes/java/lang/Package.java | 1 + .../classes/java/lang/ProcessBuilder.java | 2 + .../classes/java/lang/ProcessHandleImpl.java | 6 +++ .../classes/java/lang/PublicMethods.java | 1 + .../share/classes/java/lang/Runtime.java | 6 +++ .../classes/java/lang/SecurityManager.java | 6 +++ .../share/classes/java/lang/StackWalker.java | 1 + .../share/classes/java/lang/String.java | 3 ++ .../share/classes/java/lang/System.java | 23 ++++++++++- .../share/classes/java/lang/Thread.java | 12 +++++- .../share/classes/java/lang/ThreadGroup.java | 1 + .../lang/constant/MethodTypeDescImpl.java | 1 + .../java/lang/invoke/ClassSpecializer.java | 1 + .../java/lang/invoke/InfoFromMemberName.java | 1 + .../invoke/InnerClassLambdaMetafactory.java | 2 + .../lang/invoke/InvokerBytecodeGenerator.java | 1 + .../java/lang/invoke/MethodHandleProxies.java | 1 + .../java/lang/invoke/MethodHandles.java | 5 +++ .../classes/java/lang/invoke/MethodType.java | 1 + .../java/lang/invoke/ProxyClassesDumper.java | 1 + .../java/lang/invoke/SerializedLambda.java | 1 + .../java/lang/module/ModuleFinder.java | 1 + .../classes/java/lang/ref/Finalizer.java | 1 + .../java/lang/reflect/AccessibleObject.java | 2 + .../classes/java/lang/reflect/Proxy.java | 8 ++++ .../java/lang/reflect/ProxyGenerator.java | 2 + .../java/lang/runtime/ObjectMethods.java | 1 + .../java/net/AbstractPlainSocketImpl.java | 2 + .../share/classes/java/net/Authenticator.java | 6 +++ .../share/classes/java/net/CookieHandler.java | 2 + .../classes/java/net/DatagramSocket.java | 2 + .../java/net/HttpConnectSocketImpl.java | 2 +- .../classes/java/net/HttpURLConnection.java | 2 + src/java.base/share/classes/java/net/IDN.java | 1 + .../share/classes/java/net/InetAddress.java | 3 ++ .../classes/java/net/NetMulticastSocket.java | 11 ++++++ .../classes/java/net/NetworkInterface.java | 3 ++ .../share/classes/java/net/ProxySelector.java | 2 + .../share/classes/java/net/ResponseCache.java | 2 + .../share/classes/java/net/ServerSocket.java | 6 +++ .../share/classes/java/net/Socket.java | 6 +++ .../share/classes/java/net/SocketImpl.java | 1 + .../classes/java/net/SocketPermission.java | 2 + .../classes/java/net/SocksSocketImpl.java | 4 ++ src/java.base/share/classes/java/net/URL.java | 7 +++- .../classes/java/net/URLClassLoader.java | 24 ++++++++++-- .../share/classes/java/net/URLConnection.java | 3 ++ .../net/spi/URLStreamHandlerProvider.java | 1 + .../spi/AsynchronousChannelProvider.java | 2 + .../nio/channels/spi/SelectorProvider.java | 2 + .../classes/java/nio/charset/Charset.java | 3 ++ .../java/nio/charset/spi/CharsetProvider.java | 1 + .../classes/java/nio/file/FileSystems.java | 1 + .../classes/java/nio/file/FileTreeWalker.java | 1 + .../share/classes/java/nio/file/Files.java | 2 + .../classes/java/nio/file/TempFileHelper.java | 1 + .../java/nio/file/spi/FileSystemProvider.java | 2 + .../java/nio/file/spi/FileTypeDetector.java | 1 + .../java/security/AccessControlContext.java | 14 +++++-- .../java/security/AccessController.java | 39 +++++++++++++++---- .../share/classes/java/security/KeyStore.java | 8 +++- .../classes/java/security/Permission.java | 1 + .../share/classes/java/security/Policy.java | 12 +++++- .../classes/java/security/PolicySpi.java | 2 + .../java/security/ProtectionDomain.java | 10 ++++- .../share/classes/java/security/Provider.java | 1 + .../classes/java/security/SecureRandom.java | 1 + .../share/classes/java/security/Security.java | 1 + .../classes/java/security/URIParameter.java | 1 + .../java/security/cert/CertPathBuilder.java | 1 + .../java/security/cert/CertPathValidator.java | 1 + .../classes/java/security/cert/CertStore.java | 1 + .../java/time/chrono/HijrahChronology.java | 1 + .../java/time/zone/ZoneRulesProvider.java | 1 + .../share/classes/java/util/Arrays.java | 1 + .../share/classes/java/util/Calendar.java | 2 + .../share/classes/java/util/Currency.java | 1 + .../share/classes/java/util/Locale.java | 1 + .../classes/java/util/ResourceBundle.java | 10 ++++- .../classes/java/util/ServiceLoader.java | 17 +++++++- .../share/classes/java/util/TimeZone.java | 1 + .../share/classes/java/util/Tripwire.java | 1 + .../concurrent/ConcurrentSkipListSet.java | 1 + .../util/concurrent/CopyOnWriteArrayList.java | 1 + .../java/util/concurrent/Executors.java | 10 +++++ .../java/util/concurrent/ForkJoinPool.java | 1 + .../util/concurrent/ForkJoinWorkerThread.java | 1 + .../util/concurrent/ThreadLocalRandom.java | 2 +- .../util/concurrent/ThreadPoolExecutor.java | 1 + .../atomic/AtomicIntegerFieldUpdater.java | 1 + .../atomic/AtomicLongFieldUpdater.java | 2 + .../atomic/AtomicReferenceArray.java | 1 + .../atomic/AtomicReferenceFieldUpdater.java | 1 + .../util/concurrent/atomic/Striped64.java | 2 +- .../util/random/RandomGeneratorFactory.java | 1 + .../spi/AbstractResourceBundleProvider.java | 3 +- .../java/util/spi/LocaleServiceProvider.java | 1 + .../classes/java/util/spi/ToolProvider.java | 1 + .../classes/java/util/stream/Tripwire.java | 1 + .../share/classes/java/util/zip/ZipFile.java | 1 + .../javax/crypto/JceSecurityManager.java | 1 + .../javax/crypto/ProviderVerifier.java | 1 + .../javax/net/ssl/HttpsURLConnection.java | 3 ++ .../javax/net/ssl/KeyManagerFactory.java | 1 + .../classes/javax/net/ssl/SSLContext.java | 1 + .../javax/net/ssl/SSLSocketFactory.java | 1 + .../javax/net/ssl/TrustManagerFactory.java | 1 + .../classes/javax/security/auth/Subject.java | 17 +++++++- .../security/auth/SubjectDomainCombiner.java | 1 + .../security/auth/login/Configuration.java | 4 ++ .../security/auth/login/LoginContext.java | 12 +++++- .../jdk/internal/access/JavaLangAccess.java | 2 +- .../internal/access/JavaSecurityAccess.java | 8 ++-- .../jdk/internal/icu/impl/ICUBinary.java | 2 +- .../jdk/internal/jimage/BasicImageReader.java | 2 + .../internal/jimage/NativeImageBuffer.java | 1 + .../internal/jrtfs/JrtFileSystemProvider.java | 2 + .../jdk/internal/jrtfs/SystemImage.java | 1 + .../jdk/internal/loader/BootLoader.java | 3 ++ .../internal/loader/BuiltinClassLoader.java | 7 ++++ .../jdk/internal/loader/ClassLoaders.java | 1 + .../classes/jdk/internal/loader/Loader.java | 6 +++ .../jdk/internal/loader/NativeLibraries.java | 1 + .../jdk/internal/loader/URLClassPath.java | 15 +++++-- .../jdk/internal/logger/BootstrapLogger.java | 9 +++++ .../internal/logger/DefaultLoggerFinder.java | 2 + .../jdk/internal/logger/LazyLoggers.java | 2 + .../internal/logger/LoggerFinderLoader.java | 3 ++ .../internal/logger/SimpleConsoleLogger.java | 1 + .../jdk/internal/misc/ExtendedMapMode.java | 1 + .../jdk/internal/misc/InnocuousThread.java | 1 + .../internal/module/IllegalAccessLogger.java | 2 + .../jdk/internal/module/ModuleReferences.java | 1 + .../classes/jdk/internal/module/Modules.java | 1 + .../internal/module/SystemModuleFinders.java | 3 ++ .../share/classes/jdk/internal/perf/Perf.java | 1 + .../jdk/internal/perf/PerfCounter.java | 1 + .../classes/jdk/internal/ref/Cleaner.java | 1 + .../jdk/internal/reflect/ClassDefiner.java | 1 + .../reflect/MethodAccessorGenerator.java | 1 + .../internal/reflect/ReflectionFactory.java | 1 + .../internal/util/random/RandomSupport.java | 1 + .../classes/sun/invoke/util/VerifyAccess.java | 1 + .../sun/net/InetAddressCachePolicy.java | 1 + .../share/classes/sun/net/NetProperties.java | 1 + .../share/classes/sun/net/NetworkClient.java | 1 + .../classes/sun/net/ResourceManager.java | 2 + .../sun/net/ftp/FtpClientProvider.java | 2 + .../classes/sun/net/ftp/impl/FtpClient.java | 1 + .../sun/net/spi/DefaultProxySelector.java | 3 ++ .../classes/sun/net/util/IPAddressUtil.java | 1 + .../sun/net/util/SocketExceptions.java | 1 + .../share/classes/sun/net/www/MimeTable.java | 1 + .../classes/sun/net/www/http/HttpCapture.java | 1 + .../classes/sun/net/www/http/HttpClient.java | 3 ++ .../sun/net/www/http/KeepAliveCache.java | 2 + .../sun/net/www/http/KeepAliveStream.java | 1 + .../net/www/http/KeepAliveStreamCleaner.java | 2 + .../www/protocol/ftp/FtpURLConnection.java | 1 + .../www/protocol/http/AuthenticationInfo.java | 1 + .../protocol/http/DigestAuthentication.java | 1 + .../www/protocol/http/HttpURLConnection.java | 17 +++++++- .../net/www/protocol/https/HttpsClient.java | 1 + .../sun/net/www/protocol/jar/URLJarFile.java | 1 + .../jrt/JavaRuntimeURLConnection.java | 1 + .../protocol/mailto/MailToURLConnection.java | 1 + .../nio/ch/AsynchronousChannelGroupImpl.java | 6 +++ .../AsynchronousServerSocketChannelImpl.java | 1 + .../nio/ch/AsynchronousSocketChannelImpl.java | 1 + .../sun/nio/ch/DatagramChannelImpl.java | 8 ++++ .../sun/nio/ch/DatagramSocketAdaptor.java | 8 ++++ .../share/classes/sun/nio/ch/Invoker.java | 2 + .../share/classes/sun/nio/ch/Net.java | 3 ++ .../share/classes/sun/nio/ch/Reflect.java | 1 + .../sun/nio/ch/ServerSocketAdaptor.java | 1 + .../sun/nio/ch/ServerSocketChannelImpl.java | 2 + .../classes/sun/nio/ch/SocketAdaptor.java | 1 + .../classes/sun/nio/ch/SocketChannelImpl.java | 2 + .../share/classes/sun/nio/ch/ThreadPool.java | 3 ++ .../classes/sun/nio/ch/UnixDomainSockets.java | 2 + .../share/classes/sun/nio/ch/Util.java | 2 + .../classes/sun/nio/cs/CharsetMapping.java | 1 + .../classes/sun/nio/fs/AbstractPoller.java | 1 + .../AbstractUserDefinedFileAttributeView.java | 1 + .../sun/nio/fs/PollingWatchService.java | 2 + .../share/classes/sun/nio/fs/Reflect.java | 1 + .../AnnotationInvocationHandler.java | 1 + .../reflect/annotation/AnnotationParser.java | 1 + .../reflect/annotation/AnnotationSupport.java | 1 + .../reflect/annotation/AnnotationType.java | 1 + .../classes/sun/reflect/misc/MethodUtil.java | 3 ++ .../classes/sun/reflect/misc/ReflectUtil.java | 9 ++++- .../sun/security/action/GetBooleanAction.java | 1 + .../sun/security/action/GetIntegerAction.java | 2 + .../security/action/GetPropertyAction.java | 3 ++ .../sun/security/jca/ProviderConfig.java | 6 ++- .../sun/security/jca/ProviderList.java | 1 + .../sun/security/pkcs12/PKCS12KeyStore.java | 1 + .../sun/security/provider/ConfigFile.java | 2 + .../classes/sun/security/provider/DRBG.java | 1 + .../classes/sun/security/provider/MD4.java | 1 + .../sun/security/provider/PolicyFile.java | 1 + .../sun/security/provider/PolicySpiFile.java | 1 + .../sun/security/provider/SeedGenerator.java | 3 ++ .../security/provider/SubjectCodeSource.java | 2 + .../classes/sun/security/provider/Sun.java | 1 + .../sun/security/provider/SunEntries.java | 1 + .../provider/VerificationProvider.java | 1 + .../sun/security/provider/certpath/OCSP.java | 1 + .../provider/certpath/OCSPResponse.java | 1 + .../provider/certpath/RevocationChecker.java | 1 + .../classes/sun/security/rsa/SunRsaSign.java | 1 + .../sun/security/ssl/AlpnExtension.java | 1 + .../ssl/PredefinedDHParameterSpecs.java | 1 + .../classes/sun/security/ssl/SSLCipher.java | 1 + .../sun/security/ssl/SSLConfiguration.java | 4 +- .../sun/security/ssl/SSLContextImpl.java | 1 + .../sun/security/ssl/SSLEngineImpl.java | 1 + .../sun/security/ssl/SSLSessionImpl.java | 2 + .../security/ssl/ServerHandshakeContext.java | 1 + .../security/ssl/StatusResponseManager.java | 2 + .../classes/sun/security/ssl/SunJSSE.java | 1 + .../sun/security/ssl/TransportContext.java | 5 +++ .../security/ssl/TrustManagerFactoryImpl.java | 1 + .../sun/security/ssl/TrustStoreManager.java | 4 +- .../util/AbstractAlgorithmConstraints.java | 1 + .../sun/security/util/AnchorCertificates.java | 1 + .../classes/sun/security/util/DomainName.java | 1 + .../sun/security/util/KeyStoreDelegator.java | 1 + .../sun/security/util/SecurityProperties.java | 1 + .../security/util/UntrustedCertificates.java | 1 + .../security/validator/CADistrustPolicy.java | 1 + .../classes/sun/security/x509/X500Name.java | 1 + .../sun/util/calendar/ZoneInfoFile.java | 1 + .../util/cldr/CLDRLocaleProviderAdapter.java | 4 ++ .../provider/AuxLocaleProviderAdapter.java | 1 + .../provider/JRELocaleProviderAdapter.java | 14 +++++++ .../provider/SPILocaleProviderAdapter.java | 1 + .../BreakIteratorResourceBundle.java | 1 + .../classes/sun/util/resources/Bundles.java | 1 + .../sun/util/resources/LocaleData.java | 2 + .../unix/classes/java/io/UnixFileSystem.java | 2 + .../unix/classes/java/lang/ProcessImpl.java | 3 ++ .../net/dns/ResolverConfigurationImpl.java | 2 + .../http/ntlm/NTLMAuthentication.java | 1 + .../net/www/protocol/jar/JarFileFactory.java | 1 + .../classes/sun/nio/ch/InheritedChannel.java | 1 + ...ixAsynchronousServerSocketChannelImpl.java | 3 ++ .../ch/UnixAsynchronousSocketChannelImpl.java | 1 + .../sun/nio/ch/UnixDomainSocketsUtil.java | 1 + .../sun/nio/fs/MimeTypesFileTypeDetector.java | 1 + .../sun/nio/fs/UnixChannelFactory.java | 1 + .../unix/classes/sun/nio/fs/UnixCopyFile.java | 2 + .../sun/nio/fs/UnixFileAttributeViews.java | 2 + .../classes/sun/nio/fs/UnixFileStore.java | 1 + .../classes/sun/nio/fs/UnixFileSystem.java | 3 ++ .../sun/nio/fs/UnixFileSystemProvider.java | 5 +++ .../unix/classes/sun/nio/fs/UnixPath.java | 4 ++ .../sun/nio/fs/UnixSecureDirectoryStream.java | 7 ++++ .../fs/UnixUserDefinedFileAttributeView.java | 5 +++ .../sun/nio/fs/UnixUserPrincipals.java | 1 + .../sun/security/provider/NativePRNG.java | 2 + .../classes/java/io/WinNTFileSystem.java | 3 ++ .../classes/java/lang/ProcessImpl.java | 3 ++ .../classes/java/net/PlainSocketImpl.java | 2 + .../http/ntlm/NTLMAuthentication.java | 2 + .../net/www/protocol/jar/JarFileFactory.java | 1 + .../sun/nio/ch/DefaultSelectorProvider.java | 1 + .../windows/classes/sun/nio/ch/PipeImpl.java | 1 + .../sun/nio/ch/UnixDomainSocketsUtil.java | 1 + ...wsAsynchronousServerSocketChannelImpl.java | 5 ++- .../WindowsAsynchronousSocketChannelImpl.java | 2 + .../nio/fs/WindowsAclFileAttributeView.java | 1 + .../sun/nio/fs/WindowsChannelFactory.java | 1 + .../classes/sun/nio/fs/WindowsFileCopy.java | 2 + .../classes/sun/nio/fs/WindowsFileSystem.java | 2 + .../sun/nio/fs/WindowsFileSystemProvider.java | 5 +++ .../sun/nio/fs/WindowsLinkSupport.java | 1 + .../classes/sun/nio/fs/WindowsPath.java | 5 +++ .../WindowsUserDefinedFileAttributeView.java | 5 +++ .../sun/nio/fs/WindowsUserPrincipals.java | 1 + .../classes/javax/tools/ToolProvider.java | 1 + .../java/awt/datatransfer/DataFlavor.java | 1 + .../awt/datatransfer/SystemFlavorMap.java | 1 + .../macosx/classes/apple/laf/JRSUIUtils.java | 1 + .../classes/com/apple/eawt/Application.java | 1 + .../classes/com/apple/eio/FileManager.java | 1 + .../classes/com/apple/laf/AquaFileView.java | 2 +- .../com/apple/laf/AquaImageFactory.java | 2 + .../com/apple/laf/AquaLookAndFeel.java | 1 + .../classes/com/apple/laf/AquaMenuBarUI.java | 1 + .../com/apple/laf/AquaNativeResources.java | 1 + .../com/apple/laf/AquaUtilControlSize.java | 1 + .../classes/com/apple/laf/AquaUtils.java | 2 + .../classes/com/apple/laf/ScreenMenu.java | 2 +- .../classes/sun/awt/CGraphicsDevice.java | 1 + .../classes/sun/awt/PlatformGraphicsInfo.java | 1 + .../macosx/classes/sun/font/CFontManager.java | 2 + .../macosx/classes/sun/java2d/MacOSFlags.java | 1 + .../sun/java2d/metal/MTLGraphicsConfig.java | 1 + .../sun/java2d/metal/MTLRenderQueue.java | 1 + .../classes/sun/lwawt/LWComponentPeer.java | 2 + .../macosx/classes/sun/lwawt/LWToolkit.java | 2 + .../sun/lwawt/macosx/CAccessibility.java | 1 + .../lwawt/macosx/CDragSourceContextPeer.java | 1 + .../classes/sun/lwawt/macosx/CFileDialog.java | 2 + .../classes/sun/lwawt/macosx/CPrinterJob.java | 1 + .../classes/sun/lwawt/macosx/CTrayIcon.java | 1 + .../classes/sun/lwawt/macosx/LWCToolkit.java | 1 + .../sun/beans/decoder/DocumentHandler.java | 2 + .../imageio/plugins/bmp/BMPImageReader.java | 2 + .../imageio/plugins/jpeg/JPEGImageReader.java | 1 + .../imageio/plugins/jpeg/JPEGImageWriter.java | 1 + .../com/sun/imageio/stream/StreamCloser.java | 1 + .../java/swing/plaf/gtk/GTKLookAndFeel.java | 1 + .../com/sun/java/swing/plaf/gtk/Metacity.java | 2 + .../com/sun/media/sound/JDK13Services.java | 1 + .../sun/media/sound/JSSecurityManager.java | 3 ++ .../classes/com/sun/media/sound/Platform.java | 1 + .../classes/com/sun/media/sound/Printer.java | 1 + .../com/sun/media/sound/SoftSynthesizer.java | 3 ++ .../share/classes/java/awt/AWTEvent.java | 3 ++ .../share/classes/java/awt/Component.java | 1 + .../share/classes/java/awt/Container.java | 3 ++ .../share/classes/java/awt/Cursor.java | 2 + .../java/awt/DefaultKeyboardFocusManager.java | 1 + .../share/classes/java/awt/Desktop.java | 8 ++++ .../share/classes/java/awt/Dialog.java | 4 +- .../share/classes/java/awt/EventQueue.java | 1 + .../share/classes/java/awt/Font.java | 3 ++ .../classes/java/awt/GraphicsEnvironment.java | 1 + .../java/awt/KeyboardFocusManager.java | 3 ++ .../share/classes/java/awt/MenuComponent.java | 3 ++ .../share/classes/java/awt/MouseInfo.java | 1 + .../share/classes/java/awt/Robot.java | 2 + .../classes/java/awt/SequencedEvent.java | 1 + .../share/classes/java/awt/SplashScreen.java | 1 + .../share/classes/java/awt/SystemTray.java | 1 + .../share/classes/java/awt/Taskbar.java | 1 + .../share/classes/java/awt/TextComponent.java | 1 + .../share/classes/java/awt/Toolkit.java | 1 + .../share/classes/java/awt/TrayIcon.java | 2 + .../classes/java/awt/WaitDispatchSupport.java | 1 + .../share/classes/java/awt/Window.java | 1 + .../classes/java/awt/color/ICC_Profile.java | 1 + .../classes/java/awt/dnd/DragSource.java | 1 + .../classes/java/awt/event/InputEvent.java | 1 + .../java/awt/event/NativeLibLoader.java | 1 + .../classes/java/awt/image/BufferedImage.java | 1 + .../classes/java/awt/image/ColorModel.java | 1 + .../classes/java/awt/print/PrinterJob.java | 1 + .../share/classes/java/beans/Beans.java | 2 + .../classes/java/beans/EventHandler.java | 3 ++ .../classes/java/beans/Introspector.java | 1 + .../share/classes/java/beans/MetaData.java | 1 + .../java/beans/PropertyEditorManager.java | 2 + .../classes/java/beans/SimpleBeanInfo.java | 1 + .../share/classes/java/beans/Statement.java | 2 + .../share/classes/java/beans/XMLDecoder.java | 2 + .../accessibility/AccessibilityProvider.java | 1 + .../share/classes/javax/imageio/ImageIO.java | 2 + .../javax/imageio/metadata/IIOMetadata.java | 1 + .../javax/imageio/spi/IIORegistry.java | 2 + .../imageio/spi/ImageReaderWriterSpi.java | 1 + .../javax/imageio/spi/ServiceRegistry.java | 3 ++ .../share/classes/javax/print/DocFlavor.java | 1 + .../javax/print/PrintServiceLookup.java | 3 ++ .../print/StreamPrintServiceFactory.java | 1 + .../classes/javax/swing/AbstractAction.java | 1 + .../javax/swing/DefaultListCellRenderer.java | 1 + .../share/classes/javax/swing/ImageIcon.java | 2 +- .../share/classes/javax/swing/JFrame.java | 1 + .../share/classes/javax/swing/JLayer.java | 2 + .../share/classes/javax/swing/JPopupMenu.java | 2 +- .../share/classes/javax/swing/JRootPane.java | 2 +- .../classes/javax/swing/RepaintManager.java | 1 + .../swing/SortingFocusTraversalPolicy.java | 1 + .../swing/SwingPaintEventDispatcher.java | 1 + .../classes/javax/swing/SwingUtilities.java | 1 + .../classes/javax/swing/SwingWorker.java | 1 + .../share/classes/javax/swing/Timer.java | 4 ++ .../share/classes/javax/swing/TimerQueue.java | 1 + .../classes/javax/swing/TransferHandler.java | 3 ++ .../share/classes/javax/swing/UIDefaults.java | 4 ++ .../share/classes/javax/swing/UIManager.java | 5 +++ .../swing/filechooser/FileSystemView.java | 1 + .../plaf/basic/BasicComboBoxRenderer.java | 1 + .../javax/swing/plaf/basic/BasicLabelUI.java | 1 + .../swing/plaf/basic/BasicLookAndFeel.java | 3 ++ .../swing/plaf/basic/BasicPopupMenuUI.java | 2 + .../swing/plaf/metal/DefaultMetalTheme.java | 2 + .../javax/swing/plaf/metal/MetalLabelUI.java | 1 + .../swing/plaf/metal/MetalLookAndFeel.java | 3 ++ .../javax/swing/plaf/metal/MetalSliderUI.java | 2 + .../swing/plaf/nimbus/NimbusLookAndFeel.java | 1 + .../swing/table/DefaultTableCellRenderer.java | 1 + .../javax/swing/text/AbstractDocument.java | 1 + .../javax/swing/text/JTextComponent.java | 1 + .../classes/javax/swing/text/PlainView.java | 1 + .../javax/swing/text/html/HTMLEditorKit.java | 1 + .../text/html/parser/ParserDelegator.java | 1 + .../javax/swing/text/rtf/RTFReader.java | 1 + .../share/classes/sun/awt/AWTAccessor.java | 2 + .../classes/sun/awt/AWTAutoShutdown.java | 1 + .../share/classes/sun/awt/AppContext.java | 5 +++ .../classes/sun/awt/CausedFocusEvent.java | 1 + .../share/classes/sun/awt/DebugSettings.java | 1 + .../classes/sun/awt/FontConfiguration.java | 3 ++ .../share/classes/sun/awt/FontDescriptor.java | 1 + .../classes/sun/awt/NativeLibLoader.java | 1 + .../share/classes/sun/awt/SunToolkit.java | 1 + .../sun/awt/datatransfer/DataTransferer.java | 3 ++ .../awt/datatransfer/TransferableProxy.java | 2 + .../sun/awt/dnd/SunDropTargetContextPeer.java | 1 + .../awt/im/ExecutableInputMethodManager.java | 2 + .../classes/sun/awt/im/InputContext.java | 1 + .../sun/awt/im/InputMethodContext.java | 1 + .../sun/awt/image/FileImageSource.java | 1 + .../sun/awt/image/ImageConsumerQueue.java | 1 + .../classes/sun/awt/image/ImageDecoder.java | 1 + .../classes/sun/awt/image/ImageFetcher.java | 1 + .../classes/sun/awt/image/ImageWatched.java | 3 ++ .../classes/sun/awt/image/ImagingLib.java | 1 + .../sun/awt/image/InputStreamImageSource.java | 1 + .../sun/awt/image/JPEGImageDecoder.java | 1 + .../sun/awt/image/NativeLibLoader.java | 1 + .../classes/sun/awt/image/URLImageSource.java | 2 + .../sun/awt/image/VSyncedBSManager.java | 1 + .../sun/awt/shell/ShellFolderManager.java | 6 ++- .../sun/awt/util/PerformanceLogger.java | 1 + .../classes/sun/font/CreatedFontTracker.java | 1 + .../share/classes/sun/font/FileFont.java | 2 + .../classes/sun/font/FontManagerFactory.java | 1 + .../sun/font/FontManagerNativeLibrary.java | 1 + .../share/classes/sun/font/FontUtilities.java | 1 + .../share/classes/sun/font/StrikeCache.java | 1 + .../classes/sun/font/SunFontManager.java | 1 + .../share/classes/sun/font/TrueTypeFont.java | 2 + .../share/classes/sun/font/Type1Font.java | 3 ++ .../share/classes/sun/java2d/Disposer.java | 1 + .../sun/java2d/SunGraphicsEnvironment.java | 1 + .../share/classes/sun/java2d/SurfaceData.java | 1 + .../classes/sun/java2d/SurfaceDataProxy.java | 2 + .../classes/sun/java2d/cmm/CMSManager.java | 2 + .../classes/sun/java2d/cmm/lcms/LCMS.java | 1 + .../sun/java2d/loops/GraphicsPrimitive.java | 3 ++ .../java2d/marlin/DMarlinRenderingEngine.java | 1 + .../sun/java2d/marlin/MarlinProperties.java | 3 ++ .../sun/java2d/marlin/RendererStats.java | 1 + .../sun/java2d/opengl/OGLRenderQueue.java | 1 + .../sun/java2d/opengl/OGLSurfaceData.java | 4 ++ .../sun/java2d/pipe/RenderingEngine.java | 3 ++ .../share/classes/sun/print/PSPrinterJob.java | 1 + .../share/classes/sun/print/PrintJob2D.java | 2 + .../classes/sun/print/RasterPrinterJob.java | 6 +++ .../classes/sun/print/ServiceDialog.java | 4 ++ .../classes/sun/swing/JLightweightFrame.java | 2 +- .../classes/sun/swing/SwingUtilities2.java | 4 ++ .../classes/sun/awt/PlatformGraphicsInfo.java | 1 + .../unix/classes/sun/awt/UNIXToolkit.java | 5 +++ .../unix/classes/sun/awt/X11/InfoWindow.java | 1 + .../sun/awt/X11/MotifColorUtilities.java | 1 + .../unix/classes/sun/awt/X11/Native.java | 1 + .../unix/classes/sun/awt/X11/XClipboard.java | 1 + .../classes/sun/awt/X11/XEmbedCanvasPeer.java | 1 + .../sun/awt/X11/XErrorHandlerUtil.java | 1 + .../classes/sun/awt/X11/XFileDialogPeer.java | 2 +- .../unix/classes/sun/awt/X11/XRobotPeer.java | 1 + .../classes/sun/awt/X11/XTaskbarPeer.java | 2 + .../unix/classes/sun/awt/X11/XToolkit.java | 8 ++++ .../classes/sun/awt/X11/XTrayIconPeer.java | 1 + .../unix/classes/sun/awt/X11/XWindowPeer.java | 1 + .../unix/classes/sun/awt/X11/XlibWrapper.java | 2 + .../classes/sun/awt/X11GraphicsDevice.java | 2 + .../sun/awt/X11GraphicsEnvironment.java | 1 + .../sun/java2d/x11/X11SurfaceData.java | 2 + .../sun/java2d/xr/XRCompositeManager.java | 1 + .../unix/classes/sun/print/CUPSPrinter.java | 1 + .../classes/sun/print/IPPPrintService.java | 3 ++ .../sun/print/PrintServiceLookupProvider.java | 1 + .../unix/classes/sun/print/UnixPrintJob.java | 2 + .../classes/sun/print/UnixPrintService.java | 1 + .../plaf/windows/AnimationController.java | 1 + .../plaf/windows/WindowsLookAndFeel.java | 2 + .../sun/java/swing/plaf/windows/XPStyle.java | 1 + .../classes/sun/awt/Win32FontManager.java | 1 + .../classes/sun/awt/Win32GraphicsDevice.java | 2 + .../sun/awt/shell/Win32ShellFolder2.java | 2 + .../awt/shell/Win32ShellFolderManager2.java | 11 +++++- .../awt/windows/TranslucentWindowPainter.java | 2 + .../sun/awt/windows/WEmbeddedFrame.java | 2 + .../sun/awt/windows/WFileDialogPeer.java | 1 + .../classes/sun/awt/windows/WFramePeer.java | 1 + .../sun/awt/windows/WMenuItemPeer.java | 1 + .../sun/awt/windows/WPathGraphics.java | 1 + .../classes/sun/awt/windows/WPrinterJob.java | 1 + .../classes/sun/awt/windows/WToolkit.java | 5 +++ .../java2d/d3d/D3DScreenUpdateManager.java | 2 + .../sun/java2d/windows/WindowsFlags.java | 1 + .../sun/print/PrintServiceLookupProvider.java | 1 + .../classes/sun/print/Win32PrintJob.java | 1 + .../classes/sun/print/Win32PrintService.java | 1 + .../sun/instrument/InstrumentationImpl.java | 1 + .../java/util/logging/FileHandler.java | 1 + .../classes/java/util/logging/Handler.java | 1 + .../classes/java/util/logging/Level.java | 1 + .../classes/java/util/logging/LogManager.java | 1 + .../classes/java/util/logging/LogRecord.java | 1 + .../classes/java/util/logging/Logger.java | 2 + .../java/util/logging/StreamHandler.java | 1 + .../logging/internal/LoggingProviderImpl.java | 4 ++ .../remote/rmi/RMIConnectionImpl.java | 9 +++++ .../management/remote/rmi/RMIConnector.java | 1 + .../DefaultMBeanServerInterceptor.java | 11 ++++++ .../ClassLoaderRepositorySupport.java | 1 + .../com/sun/jmx/mbeanserver/Introspector.java | 1 + .../sun/jmx/mbeanserver/JmxMBeanServer.java | 4 ++ .../jmx/mbeanserver/MBeanInstantiator.java | 3 ++ .../com/sun/jmx/mbeanserver/MXBeanLookup.java | 1 + .../com/sun/jmx/mbeanserver/PerInterface.java | 1 + .../internal/ArrayNotificationBuffer.java | 4 ++ .../remote/internal/ClientNotifForwarder.java | 3 ++ .../remote/internal/ServerNotifForwarder.java | 3 ++ .../jmx/remote/security/FileLoginModule.java | 2 + .../security/HashedPasswordManager.java | 1 + .../security/JMXPluggableAuthenticator.java | 2 + .../security/JMXSubjectDomainCombiner.java | 1 + .../security/MBeanServerAccessController.java | 6 +++ .../MBeanServerFileAccessController.java | 2 + .../jmx/remote/security/SubjectDelegator.java | 3 ++ .../com/sun/jmx/remote/util/EnvHelp.java | 1 + .../lang/management/ManagementFactory.java | 1 + .../java/lang/management/RuntimeMXBean.java | 1 + .../management/ClassAttributeValueExp.java | 1 + .../javax/management/MBeanAttributeInfo.java | 1 + .../classes/javax/management/MBeanInfo.java | 1 + .../javax/management/MBeanServerFactory.java | 2 + .../javax/management/Notification.java | 1 + .../javax/management/NumericValueExp.java | 1 + .../classes/javax/management/ObjectName.java | 1 + .../javax/management/StandardMBean.java | 1 + .../javax/management/loading/MLet.java | 1 + .../modelmbean/DescriptorSupport.java | 2 +- .../InvalidTargetObjectTypeException.java | 1 + .../modelmbean/ModelMBeanAttributeInfo.java | 1 + .../modelmbean/ModelMBeanConstructorInfo.java | 1 + .../modelmbean/ModelMBeanInfoSupport.java | 1 + .../ModelMBeanNotificationInfo.java | 1 + .../modelmbean/ModelMBeanOperationInfo.java | 1 + .../modelmbean/RequiredModelMBean.java | 7 ++++ .../modelmbean/XMLParseException.java | 1 + .../javax/management/monitor/Monitor.java | 7 ++++ .../javax/management/openmbean/OpenType.java | 2 + .../openmbean/TabularDataSupport.java | 1 + .../MBeanServerNotificationFilter.java | 1 + .../relation/RelationNotification.java | 1 + .../relation/RelationTypeSupport.java | 1 + .../javax/management/relation/Role.java | 1 + .../javax/management/relation/RoleInfo.java | 1 + .../javax/management/relation/RoleResult.java | 1 + .../management/relation/RoleUnresolved.java | 1 + .../remote/JMXConnectorFactory.java | 2 + .../management/ManagementFactoryHelper.java | 3 ++ .../sun/management/MappedMXBeanType.java | 1 + .../share/classes/sun/management/Util.java | 1 + .../sun/management/VMManagementImpl.java | 2 + .../management/spi/PlatformMBeanProvider.java | 1 + .../classes/com/sun/jndi/ldap/Connection.java | 1 + .../sun/jndi/ldap/LdapBindingEnumeration.java | 2 + .../classes/com/sun/jndi/ldap/LdapCtx.java | 1 + .../sun/jndi/ldap/LdapDnsProviderService.java | 1 + .../com/sun/jndi/ldap/LdapPoolManager.java | 1 + .../sun/jndi/ldap/LdapSearchEnumeration.java | 2 + .../com/sun/jndi/ldap/VersionHelper.java | 3 ++ .../sun/naming/internal/VersionHelper.java | 8 ++++ .../javax/naming/ldap/StartTlsRequest.java | 2 + .../naming/ldap/spi/LdapDnsProvider.java | 1 + .../javax/naming/spi/NamingManager.java | 3 ++ .../provider/certpath/ldap/JdkLDAP.java | 1 + .../provider/certpath/ldap/LDAPCertStore.java | 1 + .../certpath/ldap/LDAPCertStoreImpl.java | 2 + .../jdk/internal/net/http/Exchange.java | 4 +- .../jdk/internal/net/http/HttpClientImpl.java | 4 ++ .../internal/net/http/HttpRequestImpl.java | 3 ++ .../jdk/internal/net/http/MultiExchange.java | 3 +- .../net/http/PlainHttpConnection.java | 1 + .../internal/net/http/PrivilegedExecutor.java | 7 +++- .../internal/net/http/RequestPublishers.java | 3 ++ .../net/http/ResponseBodyHandlers.java | 10 ++++- .../net/http/ResponseSubscribers.java | 7 +++- .../jdk/internal/net/http/common/Utils.java | 5 +++ .../jdk/internal/net/http/hpack/HPACK.java | 1 + .../net/http/websocket/OpeningHandshake.java | 2 + .../util/prefs/MacOSXPreferencesFile.java | 1 + .../java/util/prefs/AbstractPreferences.java | 1 + .../classes/java/util/prefs/Preferences.java | 3 ++ .../util/prefs/FileSystemPreferences.java | 1 + .../java/util/prefs/WindowsPreferences.java | 1 + .../classes/java/rmi/MarshalledObject.java | 1 + .../classes/java/rmi/RMISecurityManager.java | 1 + .../classes/java/rmi/server/LogStream.java | 1 + .../share/classes/java/rmi/server/ObjID.java | 1 + .../java/rmi/server/RMIClassLoader.java | 2 + .../java/rmi/server/RMISocketFactory.java | 2 + .../classes/sun/rmi/log/ReliableLog.java | 3 ++ .../sun/rmi/registry/RegistryImpl.java | 6 +++ .../share/classes/sun/rmi/runtime/Log.java | 3 ++ .../sun/rmi/runtime/NewThreadAction.java | 3 ++ .../classes/sun/rmi/runtime/RuntimeUtil.java | 3 ++ .../classes/sun/rmi/server/Activation.java | 1 + .../classes/sun/rmi/server/LoaderHandler.java | 9 +++++ .../sun/rmi/server/MarshalInputStream.java | 4 +- .../sun/rmi/server/MarshalOutputStream.java | 1 + .../classes/sun/rmi/server/UnicastRef.java | 1 + .../sun/rmi/server/UnicastServerRef.java | 5 +++ .../share/classes/sun/rmi/server/Util.java | 3 ++ .../sun/rmi/transport/DGCAckHandler.java | 2 + .../classes/sun/rmi/transport/DGCClient.java | 1 + .../classes/sun/rmi/transport/DGCImpl.java | 2 +- .../share/classes/sun/rmi/transport/GC.java | 1 + .../sun/rmi/transport/ObjectTable.java | 3 ++ .../sun/rmi/transport/StreamRemoteCall.java | 1 + .../classes/sun/rmi/transport/Target.java | 4 ++ .../classes/sun/rmi/transport/Transport.java | 2 +- .../sun/rmi/transport/tcp/TCPChannel.java | 9 +++++ .../sun/rmi/transport/tcp/TCPEndpoint.java | 4 ++ .../sun/rmi/transport/tcp/TCPTransport.java | 2 +- .../javax/script/ScriptEngineManager.java | 1 + .../auth/kerberos/KerberosPrincipal.java | 1 + .../javax/security/auth/kerberos/KeyTab.java | 3 +- .../classes/sun/security/jgss/GSSUtil.java | 2 + .../sun/security/jgss/LoginConfigImpl.java | 1 + .../sun/security/jgss/SunProvider.java | 1 + .../sun/security/jgss/krb5/InitialToken.java | 1 + .../jgss/krb5/Krb5AcceptCredential.java | 1 + .../sun/security/jgss/krb5/Krb5Context.java | 2 + .../jgss/krb5/Krb5InitCredential.java | 1 + .../security/jgss/krb5/Krb5MechFactory.java | 2 + .../security/jgss/krb5/Krb5NameElement.java | 1 + .../sun/security/jgss/krb5/Krb5Util.java | 9 +++-- .../security/jgss/wrapper/GSSCredElement.java | 1 + .../security/jgss/wrapper/GSSNameElement.java | 1 + .../sun/security/jgss/wrapper/Krb5Util.java | 1 + .../jgss/wrapper/NativeGSSContext.java | 2 + .../jgss/wrapper/SunNativeProvider.java | 1 + .../classes/sun/security/krb5/Config.java | 4 ++ .../sun/security/krb5/Credentials.java | 1 + .../classes/sun/security/krb5/KdcComm.java | 2 + .../sun/security/krb5/KrbServiceLocator.java | 2 + .../security/krb5/SCDynamicStoreConfig.java | 1 + .../internal/ccache/FileCredentialsCache.java | 2 + .../com/sun/security/sasl/Provider.java | 1 + .../classes/javax/security/sasl/Sasl.java | 1 + .../javax/smartcardio/TerminalFactory.java | 1 + .../sun/security/smartcardio/CardImpl.java | 2 + .../sun/security/smartcardio/ChannelImpl.java | 1 + .../sun/security/smartcardio/SunPCSC.java | 1 + .../security/smartcardio/TerminalImpl.java | 1 + .../security/smartcardio/PlatformPCSC.java | 1 + .../security/smartcardio/PlatformPCSC.java | 1 + .../com/sun/rowset/CachedRowSetImpl.java | 1 + .../javax/sql/rowset/RowSetProvider.java | 4 +- .../sql/rowset/serial/SerialJavaObject.java | 1 + .../javax/sql/rowset/spi/SyncFactory.java | 6 ++- .../share/classes/java/sql/DriverManager.java | 4 ++ .../apache/xml/internal/security/Init.java | 2 + .../c14n/implementations/UtfHelpper.java | 1 + .../security/parser/XMLParserImpl.java | 3 ++ .../internal/security/signature/Manifest.java | 1 + .../security/signature/Reference.java | 1 + .../security/utils/IgnoreAllErrorHandler.java | 1 + .../internal/security/utils/JavaUtils.java | 1 + .../xml/internal/security/utils/XMLUtils.java | 2 + .../com/sun/org/slf4j/internal/Logger.java | 1 + .../xml/dsig/internal/dom/DOMReference.java | 1 + .../org/jcp/xml/dsig/internal/dom/Policy.java | 1 + .../jcp/xml/dsig/internal/dom/XMLDSigRI.java | 2 + .../xalan/internal/utils/ObjectFactory.java | 3 ++ .../internal/xsltc/compiler/util/Type.java | 1 + .../internal/xsltc/trax/TemplatesImpl.java | 3 ++ .../xsltc/trax/TransformerFactoryImpl.java | 1 + .../jaxp/DocumentBuilderFactoryImpl.java | 1 + .../internal/jaxp/SAXParserFactoryImpl.java | 1 + .../jaxp/validation/XMLSchemaFactory.java | 1 + .../XMLSchemaValidatorComponentManager.java | 1 + .../xerces/internal/utils/ObjectFactory.java | 3 ++ .../xpath/internal/jaxp/XPathFactoryImpl.java | 1 + .../javax/xml/datatype/FactoryFinder.java | 2 + .../javax/xml/parsers/FactoryFinder.java | 2 + .../javax/xml/stream/FactoryFinder.java | 2 + .../javax/xml/transform/FactoryFinder.java | 2 + .../xml/transform/TransformerException.java | 1 + .../xml/validation/SchemaFactoryFinder.java | 3 ++ .../javax/xml/xpath/XPathFactoryFinder.java | 3 ++ .../classes/jdk/xml/internal/JdkXmlUtils.java | 2 + .../jdk/xml/internal/SecuritySupport.java | 14 +++++++ .../bootstrap/DOMImplementationRegistry.java | 4 ++ .../org/xml/sax/helpers/NewInstance.java | 1 + .../org/xml/sax/helpers/XMLReaderFactory.java | 1 + .../accessibility/util/AWTEventMonitor.java | 1 + .../accessibility/util/EventQueueMonitor.java | 1 + .../accessibility/internal/AccessBridge.java | 1 + .../sun/tools/attach/spi/AttachProvider.java | 1 + .../tools/attach/HotSpotAttachProvider.java | 1 + .../tools/attach/HotSpotVirtualMachine.java | 1 + .../classes/sun/nio/cs/ext/JISAutoDetect.java | 1 + .../classes/sun/nio/cs/ext/SJIS_0213.java | 1 + .../classes/sun/security/pkcs11/Config.java | 1 + .../classes/sun/security/pkcs11/P11Key.java | 1 + .../sun/security/pkcs11/P11KeyAgreement.java | 1 + .../classes/sun/security/pkcs11/P11Util.java | 1 + .../sun/security/pkcs11/SunPKCS11.java | 7 ++++ .../sun/security/pkcs11/wrapper/PKCS11.java | 1 + .../share/classes/sun/security/ec/SunEC.java | 1 + .../sun/security/mscapi/CKeyStore.java | 2 + .../sun/security/mscapi/SunMSCAPI.java | 1 + .../classes/jdk/dynalink/BiClassValue.java | 2 + .../jdk/dynalink/DynamicLinkerFactory.java | 3 ++ .../jdk/dynalink/SecureLookupSupplier.java | 1 + .../jdk/dynalink/beans/BeanIntrospector.java | 1 + .../beans/CallerSensitiveDynamicMethod.java | 2 + .../beans/CheckRestrictedPackage.java | 2 + .../jdk/dynalink/beans/ClassString.java | 2 + .../beans/OverloadedDynamicMethod.java | 2 + .../internal/AccessControlContextFactory.java | 3 ++ .../linker/GuardingDynamicLinkerExporter.java | 1 + .../sun/jvm/hotspot/SALauncherLoader.java | 1 + .../hotspot/tools/jcore/ByteCodeRewriter.java | 1 + .../httpserver/spi/HttpServerProvider.java | 2 + .../sun/net/httpserver/ServerConfig.java | 1 + .../sun/net/httpserver/ServerImpl.java | 1 + .../jdk/incubator/foreign/LibraryLookup.java | 3 ++ .../protocol/local/PerfDataBuffer.java | 1 + .../vm/ci/services/JVMCIServiceLocator.java | 2 + .../src/jdk/vm/ci/services/Services.java | 3 ++ .../tools/jdi/VirtualMachineManagerImpl.java | 1 + .../share/classes/jdk/jfr/FlightRecorder.java | 1 + .../jdk/jfr/FlightRecorderPermission.java | 1 + .../share/classes/jdk/jfr/SettingControl.java | 3 ++ .../classes/jdk/jfr/consumer/EventStream.java | 3 ++ .../jdk/jfr/consumer/RecordingStream.java | 1 + .../classes/jdk/jfr/internal/Control.java | 4 ++ .../jdk/jfr/internal/PlatformRecorder.java | 1 + .../jdk/jfr/internal/PlatformRecording.java | 3 ++ .../jdk/jfr/internal/PrivateAccess.java | 1 + .../jdk/jfr/internal/RequestEngine.java | 8 ++-- .../jdk/jfr/internal/SecuritySupport.java | 11 +++++- .../jdk/jfr/internal/ShutdownHook.java | 1 + .../share/classes/jdk/jfr/internal/Utils.java | 2 + .../jdk/jfr/internal/WriteableUserPath.java | 3 ++ .../consumer/AbstractEventStream.java | 4 +- .../consumer/EventDirectoryStream.java | 1 + .../internal/consumer/EventFileStream.java | 2 +- .../management/ManagementSupport.java | 1 + .../jdk/tools/jlink/internal/Jlink.java | 1 + .../jdk/tools/jlink/internal/Main.java | 1 + .../classes/sun/tools/jstatd/Jstatd.java | 2 +- .../jdk/internal/agent/spi/AgentProvider.java | 1 + .../jdk/internal/agent/FileSystemImpl.java | 1 + .../jdk/internal/agent/FileSystemImpl.java | 1 + .../jfr/FlightRecorderMXBeanImpl.java | 7 ++++ .../jdk/management/jfr/MBeanUtils.java | 2 + .../management/jfr/RemoteRecordingStream.java | 2 + .../internal/DiagnosticCommandImpl.java | 1 + .../com/sun/management/internal/Flag.java | 1 + ...rbageCollectionNotifInfoCompositeData.java | 1 + .../internal/GcInfoCompositeData.java | 2 + .../internal/HotSpotDiagnostic.java | 2 + .../internal/PlatformMBeanProviderImpl.java | 1 + .../com/sun/jndi/dns/DnsContextFactory.java | 1 + .../jndi/rmi/registry/RegistryContext.java | 2 + .../classes/jdk/net/LinuxSocketOptions.java | 1 + .../classes/jdk/net/MacOSXSocketOptions.java | 1 + .../jdk/net/ExtendedSocketOptions.java | 1 + .../share/classes/jdk/nio/Channels.java | 1 + .../sun/nio/ch/sctp/SctpChannelImpl.java | 1 + .../sun/nio/ch/sctp/SctpMultiChannelImpl.java | 3 ++ .../unix/classes/sun/nio/ch/sctp/SctpNet.java | 1 + .../nio/ch/sctp/SctpServerChannelImpl.java | 2 + .../security/jgss/ExtendedGSSContextImpl.java | 1 + .../sun/security/sasl/gsskerb/JdkSASL.java | 1 + .../sun/reflect/ReflectionFactory.java | 2 + .../classes/jdk/nio/zipfs/ZipFileSystem.java | 5 +++ .../jdk/nio/zipfs/ZipFileSystemProvider.java | 1 + .../reflect/ClazzWithSecurityManager.java | 1 + .../bench/java/security/DoPrivileged.java | 2 + .../bench/java/security/GetContext.java | 5 +++ 815 files changed, 1796 insertions(+), 93 deletions(-) diff --git a/src/demo/share/jfc/J2Ddemo/java2d/Tools.java b/src/demo/share/jfc/J2Ddemo/java2d/Tools.java index 62a60098caab3..d83eeef88b4b2 100644 --- a/src/demo/share/jfc/J2Ddemo/java2d/Tools.java +++ b/src/demo/share/jfc/J2Ddemo/java2d/Tools.java @@ -406,7 +406,7 @@ public void run() { if (pDialogState) { printJob.print(aset); } - } catch (java.security.AccessControlException ace) { + } catch (@SuppressWarnings("removal") java.security.AccessControlException ace) { String errmsg = "Applet access control exception; to allow " + "access to printer, set\n" + "permission for \"queuePrintJob\" in " diff --git a/src/java.base/aix/classes/sun/nio/ch/DefaultSelectorProvider.java b/src/java.base/aix/classes/sun/nio/ch/DefaultSelectorProvider.java index 34187e10fffe8..a6dd0ad2b1fe7 100644 --- a/src/java.base/aix/classes/sun/nio/ch/DefaultSelectorProvider.java +++ b/src/java.base/aix/classes/sun/nio/ch/DefaultSelectorProvider.java @@ -32,6 +32,7 @@ * Creates this platform's default SelectorProvider */ +@SuppressWarnings("removal") public class DefaultSelectorProvider { private static final SelectorProviderImpl INSTANCE; static { diff --git a/src/java.base/linux/classes/jdk/internal/platform/CgroupUtil.java b/src/java.base/linux/classes/jdk/internal/platform/CgroupUtil.java index d50aa6bbb6dad..dbe8a85b2b2f5 100644 --- a/src/java.base/linux/classes/jdk/internal/platform/CgroupUtil.java +++ b/src/java.base/linux/classes/jdk/internal/platform/CgroupUtil.java @@ -39,6 +39,7 @@ public final class CgroupUtil { + @SuppressWarnings("removal") public static Stream readFilePrivileged(Path path) throws IOException { try { PrivilegedExceptionAction> pea = () -> Files.lines(path); @@ -64,7 +65,7 @@ static void unwrapIOExceptionAndRethrow(PrivilegedActionException pae) throws IO static String readStringValue(CgroupSubsystemController controller, String param) throws IOException { PrivilegedExceptionAction pea = () -> Files.newBufferedReader(Paths.get(controller.path(), param)); - try (BufferedReader bufferedReader = + try (@SuppressWarnings("removal") BufferedReader bufferedReader = AccessController.doPrivileged(pea)) { String line = bufferedReader.readLine(); return line; @@ -76,6 +77,7 @@ static String readStringValue(CgroupSubsystemController controller, String param } } + @SuppressWarnings("removal") public static List readAllLinesPrivileged(Path path) throws IOException { try { PrivilegedExceptionAction> pea = () -> Files.readAllLines(path); diff --git a/src/java.base/linux/classes/sun/nio/ch/DefaultSelectorProvider.java b/src/java.base/linux/classes/sun/nio/ch/DefaultSelectorProvider.java index 134795c8b28fb..bb16ad0a8c3d9 100644 --- a/src/java.base/linux/classes/sun/nio/ch/DefaultSelectorProvider.java +++ b/src/java.base/linux/classes/sun/nio/ch/DefaultSelectorProvider.java @@ -32,6 +32,7 @@ * Creates this platform's default SelectorProvider */ +@SuppressWarnings("removal") public class DefaultSelectorProvider { private static final SelectorProviderImpl INSTANCE; static { diff --git a/src/java.base/macosx/classes/apple/security/AppleProvider.java b/src/java.base/macosx/classes/apple/security/AppleProvider.java index 3b712846d45d8..795a099bcc9c2 100644 --- a/src/java.base/macosx/classes/apple/security/AppleProvider.java +++ b/src/java.base/macosx/classes/apple/security/AppleProvider.java @@ -73,6 +73,7 @@ public Object newInstance(Object ctrParamObj) } + @SuppressWarnings("removal") public AppleProvider() { /* We are the Apple provider */ super("Apple", PROVIDER_VER, info); diff --git a/src/java.base/macosx/classes/apple/security/KeychainStore.java b/src/java.base/macosx/classes/apple/security/KeychainStore.java index 72945f9b667eb..0a9fb30bd7bbf 100644 --- a/src/java.base/macosx/classes/apple/security/KeychainStore.java +++ b/src/java.base/macosx/classes/apple/security/KeychainStore.java @@ -110,6 +110,7 @@ class TrustedCertEntry { } private static void permissionCheck() { + @SuppressWarnings("removal") SecurityManager sec = System.getSecurityManager(); if (sec != null) { diff --git a/src/java.base/macosx/classes/java/net/DefaultInterface.java b/src/java.base/macosx/classes/java/net/DefaultInterface.java index 8aaba11227c89..89fd79c42837e 100644 --- a/src/java.base/macosx/classes/java/net/DefaultInterface.java +++ b/src/java.base/macosx/classes/java/net/DefaultInterface.java @@ -106,6 +106,7 @@ private static NetworkInterface chooseDefaultInterface() { boolean ip4 = false, ip6 = false, isNonLinkLocal = false; PrivilegedAction> pa = ni::getInetAddresses; + @SuppressWarnings("removal") Enumeration addrs = AccessController.doPrivileged(pa); while (addrs.hasMoreElements()) { InetAddress addr = addrs.nextElement(); diff --git a/src/java.base/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java b/src/java.base/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java index 131911c1bf342..6d046513a46b5 100644 --- a/src/java.base/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java +++ b/src/java.base/macosx/classes/sun/nio/ch/DefaultSelectorProvider.java @@ -32,6 +32,7 @@ * Creates this platform's default SelectorProvider */ +@SuppressWarnings("removal") public class DefaultSelectorProvider { private static final SelectorProviderImpl INSTANCE; static { diff --git a/src/java.base/share/classes/com/sun/crypto/provider/DHKeyAgreement.java b/src/java.base/share/classes/com/sun/crypto/provider/DHKeyAgreement.java index 297b78747d988..94f41e614f17c 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/DHKeyAgreement.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/DHKeyAgreement.java @@ -66,6 +66,7 @@ private static class AllowKDF { private static final boolean VALUE = getValue(); + @SuppressWarnings("removal") private static boolean getValue() { return AccessController.doPrivileged( (PrivilegedAction) diff --git a/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java b/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java index c5772b4844c83..6038f6de865e2 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java @@ -683,6 +683,7 @@ public void engineStore(OutputStream stream, char[] password) * @exception CertificateException if any of the certificates in the * keystore could not be loaded */ + @SuppressWarnings("removal") public void engineLoad(InputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException { diff --git a/src/java.base/share/classes/com/sun/crypto/provider/SealedObjectForKeyProtector.java b/src/java.base/share/classes/com/sun/crypto/provider/SealedObjectForKeyProtector.java index e50c018fa6c4a..e2d4c5aa41132 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/SealedObjectForKeyProtector.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/SealedObjectForKeyProtector.java @@ -73,6 +73,7 @@ AlgorithmParameters getParameters() { return params; } + @SuppressWarnings("removal") final Key getKey(Cipher c, int maxLength) throws IOException, ClassNotFoundException, IllegalBlockSizeException, BadPaddingException { @@ -112,6 +113,7 @@ private static class DeserializationChecker implements ObjectInputFilter { private static final ObjectInputFilter OWN_FILTER; static { + @SuppressWarnings("removal") String prop = AccessController.doPrivileged( (PrivilegedAction) () -> { String tmp = System.getProperty(KEY_SERIAL_FILTER); diff --git a/src/java.base/share/classes/com/sun/crypto/provider/SunJCE.java b/src/java.base/share/classes/com/sun/crypto/provider/SunJCE.java index 0c7e0ed266ac1..384fb23054916 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/SunJCE.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/SunJCE.java @@ -117,6 +117,7 @@ private void psA(String type, String algo, String cn, attrs)); } + @SuppressWarnings("removal") public SunJCE() { /* We are the "SunJCE" provider */ super("SunJCE", PROVIDER_VER, info); diff --git a/src/java.base/share/classes/java/io/File.java b/src/java.base/share/classes/java/io/File.java index aa06bd50ca904..bf2c1f756f36b 100644 --- a/src/java.base/share/classes/java/io/File.java +++ b/src/java.base/share/classes/java/io/File.java @@ -770,6 +770,7 @@ public URI toURI() { * method denies read access to the file */ public boolean canRead() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkRead(path); @@ -798,6 +799,7 @@ public boolean canRead() { * method denies write access to the file */ public boolean canWrite() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkWrite(path); @@ -821,6 +823,7 @@ public boolean canWrite() { * method denies read access to the file or directory */ public boolean exists() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkRead(path); @@ -851,6 +854,7 @@ public boolean exists() { * method denies read access to the file */ public boolean isDirectory() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkRead(path); @@ -883,6 +887,7 @@ public boolean isDirectory() { * method denies read access to the file */ public boolean isFile() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkRead(path); @@ -912,6 +917,7 @@ public boolean isFile() { * @since 1.2 */ public boolean isHidden() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkRead(path); @@ -955,6 +961,7 @@ public boolean isHidden() { * method denies read access to the file */ public long lastModified() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkRead(path); @@ -986,6 +993,7 @@ public long lastModified() { * method denies read access to the file */ public long length() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkRead(path); @@ -1026,6 +1034,7 @@ public long length() { * @since 1.2 */ public boolean createNewFile() throws IOException { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) security.checkWrite(path); if (isInvalid()) { @@ -1053,6 +1062,7 @@ public boolean createNewFile() throws IOException { * delete access to the file */ public boolean delete() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkDelete(path); @@ -1091,6 +1101,7 @@ public boolean delete() { * @since 1.2 */ public void deleteOnExit() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkDelete(path); @@ -1154,6 +1165,7 @@ public String[] list() { * the directory */ private final String[] normalizedList() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkRead(path); @@ -1356,6 +1368,7 @@ public File[] listFiles(FileFilter filter) { * method does not permit the named directory to be created */ public boolean mkdir() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkWrite(path); @@ -1438,6 +1451,7 @@ public boolean renameTo(File dest) { if (dest == null) { throw new NullPointerException(); } + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkWrite(path); @@ -1477,6 +1491,7 @@ public boolean renameTo(File dest) { */ public boolean setLastModified(long time) { if (time < 0) throw new IllegalArgumentException("Negative time"); + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkWrite(path); @@ -1507,6 +1522,7 @@ public boolean setLastModified(long time) { * @since 1.2 */ public boolean setReadOnly() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkWrite(path); @@ -1550,6 +1566,7 @@ public boolean setReadOnly() { * @since 1.6 */ public boolean setWritable(boolean writable, boolean ownerOnly) { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkWrite(path); @@ -1628,6 +1645,7 @@ public boolean setWritable(boolean writable) { * @since 1.6 */ public boolean setReadable(boolean readable, boolean ownerOnly) { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkWrite(path); @@ -1709,6 +1727,7 @@ public boolean setReadable(boolean readable) { * @since 1.6 */ public boolean setExecutable(boolean executable, boolean ownerOnly) { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkWrite(path); @@ -1772,6 +1791,7 @@ public boolean setExecutable(boolean executable) { * @since 1.6 */ public boolean canExecute() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkExec(path); @@ -1854,6 +1874,7 @@ public static File[] listRoots() { * @see FileStore#getTotalSpace */ public long getTotalSpace() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("getFileSystemAttributes")); @@ -1897,6 +1918,7 @@ public long getTotalSpace() { * @see FileStore#getUnallocatedSpace */ public long getFreeSpace() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("getFileSystemAttributes")); @@ -1943,6 +1965,7 @@ public long getFreeSpace() { * @see FileStore#getUsableSpace */ public long getUsableSpace() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("getFileSystemAttributes")); @@ -1977,6 +2000,7 @@ private static int shortenSubName(int subNameLength, int excess, } return subNameLength; } + @SuppressWarnings("removal") static File generateFile(String prefix, String suffix, File dir) throws IOException { @@ -2125,6 +2149,7 @@ public static File createTempFile(String prefix, String suffix, File tmpdir = (directory != null) ? directory : TempDirectory.location(); + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); File f; do { diff --git a/src/java.base/share/classes/java/io/FileInputStream.java b/src/java.base/share/classes/java/io/FileInputStream.java index 5d39af2fbbb24..4289776b5a10d 100644 --- a/src/java.base/share/classes/java/io/FileInputStream.java +++ b/src/java.base/share/classes/java/io/FileInputStream.java @@ -137,6 +137,7 @@ public FileInputStream(String name) throws FileNotFoundException { */ public FileInputStream(File file) throws FileNotFoundException { String name = (file != null ? file.getPath() : null); + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkRead(name); @@ -179,6 +180,7 @@ public FileInputStream(File file) throws FileNotFoundException { * @see SecurityManager#checkRead(java.io.FileDescriptor) */ public FileInputStream(FileDescriptor fdObj) { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (fdObj == null) { throw new NullPointerException(); diff --git a/src/java.base/share/classes/java/io/FileOutputStream.java b/src/java.base/share/classes/java/io/FileOutputStream.java index 950c3d8529e82..39fa6ce1a5cac 100644 --- a/src/java.base/share/classes/java/io/FileOutputStream.java +++ b/src/java.base/share/classes/java/io/FileOutputStream.java @@ -217,6 +217,7 @@ public FileOutputStream(File file, boolean append) throws FileNotFoundException { String name = (file != null ? file.getPath() : null); + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkWrite(name); @@ -259,6 +260,7 @@ public FileOutputStream(File file, boolean append) * @see java.lang.SecurityManager#checkWrite(java.io.FileDescriptor) */ public FileOutputStream(FileDescriptor fdObj) { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (fdObj == null) { throw new NullPointerException(); diff --git a/src/java.base/share/classes/java/io/FilePermission.java b/src/java.base/share/classes/java/io/FilePermission.java index 40d057f949562..83a1e98dc5598 100644 --- a/src/java.base/share/classes/java/io/FilePermission.java +++ b/src/java.base/share/classes/java/io/FilePermission.java @@ -308,6 +308,7 @@ public FilePermission newPermUsingAltPath(FilePermission input) { * @param mask the actions mask to use. * */ + @SuppressWarnings("removal") private void init(int mask) { if ((mask & ALL) != mask) throw new IllegalArgumentException("invalid actions mask"); diff --git a/src/java.base/share/classes/java/io/ObjectInputFilter.java b/src/java.base/share/classes/java/io/ObjectInputFilter.java index bbc9042ebcac5..ba31b439dbda0 100644 --- a/src/java.base/share/classes/java/io/ObjectInputFilter.java +++ b/src/java.base/share/classes/java/io/ObjectInputFilter.java @@ -219,6 +219,7 @@ enum Status { * * @since 9 */ + @SuppressWarnings("removal") final class Config { /* No instances. */ private Config() {} diff --git a/src/java.base/share/classes/java/io/ObjectInputStream.java b/src/java.base/share/classes/java/io/ObjectInputStream.java index 931a829df73cf..d4195bf3ba440 100644 --- a/src/java.base/share/classes/java/io/ObjectInputStream.java +++ b/src/java.base/share/classes/java/io/ObjectInputStream.java @@ -404,6 +404,7 @@ public ObjectInputStream(InputStream in) throws IOException { * @see java.io.SerializablePermission */ protected ObjectInputStream() throws IOException, SecurityException { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(SUBCLASS_IMPLEMENTATION_PERMISSION); @@ -915,6 +916,7 @@ protected boolean enableResolveObject(boolean enable) return enable; } if (enable) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(SUBSTITUTION_PERMISSION); @@ -1307,6 +1309,7 @@ public final ObjectInputFilter getObjectInputFilter() { * @since 9 */ public final void setObjectInputFilter(ObjectInputFilter filter) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(ObjectStreamConstants.SERIAL_FILTER_PERMISSION); @@ -1575,6 +1578,7 @@ private void verifySubclass() { if (cl == ObjectInputStream.class) { return; } + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm == null) { return; @@ -1596,6 +1600,7 @@ private void verifySubclass() { * override security-sensitive non-final methods. Returns TRUE if subclass * is "safe", FALSE otherwise. */ + @SuppressWarnings("removal") private static Boolean auditSubclass(Class subcl) { return AccessController.doPrivileged( new PrivilegedAction() { @@ -2683,10 +2688,11 @@ private static class Callback { final ObjectInputValidation obj; final int priority; Callback next; + @SuppressWarnings("removal") final AccessControlContext acc; Callback(ObjectInputValidation obj, int priority, Callback next, - AccessControlContext acc) + @SuppressWarnings("removal") AccessControlContext acc) { this.obj = obj; this.priority = priority; @@ -2720,6 +2726,7 @@ void register(ObjectInputValidation obj, int priority) prev = cur; cur = cur.next; } + @SuppressWarnings("removal") AccessControlContext acc = AccessController.getContext(); if (prev != null) { prev.next = new Callback(obj, priority, cur, acc); @@ -2735,6 +2742,7 @@ void register(ObjectInputValidation obj, int priority) * throws an InvalidObjectException, the callback process is terminated * and the exception propagated upwards. */ + @SuppressWarnings("removal") void doCallbacks() throws InvalidObjectException { try { while (list != null) { diff --git a/src/java.base/share/classes/java/io/ObjectOutputStream.java b/src/java.base/share/classes/java/io/ObjectOutputStream.java index b10e380ca5741..89d597d9ddb47 100644 --- a/src/java.base/share/classes/java/io/ObjectOutputStream.java +++ b/src/java.base/share/classes/java/io/ObjectOutputStream.java @@ -213,6 +213,7 @@ private static class Caches { * value of "sun.io.serialization.extendedDebugInfo" property, * as true or false for extended information about exception's place */ + @SuppressWarnings("removal") private static final boolean extendedDebugInfo = java.security.AccessController.doPrivileged( new sun.security.action.GetBooleanAction( @@ -274,6 +275,7 @@ public ObjectOutputStream(OutputStream out) throws IOException { * @see java.io.SerializablePermission */ protected ObjectOutputStream() throws IOException, SecurityException { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(SUBCLASS_IMPLEMENTATION_PERMISSION); @@ -621,6 +623,7 @@ protected boolean enableReplaceObject(boolean enable) return enable; } if (enable) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(SUBSTITUTION_PERMISSION); @@ -1052,6 +1055,7 @@ private void verifySubclass() { if (cl == ObjectOutputStream.class) { return; } + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm == null) { return; @@ -1073,6 +1077,7 @@ private void verifySubclass() { * override security-sensitive non-final methods. Returns TRUE if subclass * is "safe", FALSE otherwise. */ + @SuppressWarnings("removal") private static Boolean auditSubclass(Class subcl) { return AccessController.doPrivileged( new PrivilegedAction<>() { diff --git a/src/java.base/share/classes/java/io/ObjectStreamClass.java b/src/java.base/share/classes/java/io/ObjectStreamClass.java index 1a683e823fcc1..0c3ca8ce051e4 100644 --- a/src/java.base/share/classes/java/io/ObjectStreamClass.java +++ b/src/java.base/share/classes/java/io/ObjectStreamClass.java @@ -101,6 +101,7 @@ public class ObjectStreamClass implements Serializable { NO_FIELDS; /** reflection factory for obtaining serialization constructors */ + @SuppressWarnings("removal") private static final ReflectionFactory reflFactory = AccessController.doPrivileged( new ReflectionFactory.GetReflectionFactoryAction()); @@ -278,6 +279,7 @@ public String getName() { * * @return the SUID of the class described by this descriptor */ + @SuppressWarnings("removal") public long getSerialVersionUID() { // REMIND: synchronize instead of relying on volatile? if (suid == null) { @@ -301,6 +303,7 @@ public Long run() { * * @return the {@code Class} instance that this descriptor represents */ + @SuppressWarnings("removal") @CallerSensitive public Class forClass() { if (cl == null) { @@ -460,6 +463,7 @@ synchronized boolean set(Object entry) { * Returns the value contained by this EntryFuture, blocking if * necessary until a value is set. */ + @SuppressWarnings("removal") synchronized Object get() { boolean interrupted = false; while (entry == unset) { @@ -493,6 +497,7 @@ Thread getOwner() { /** * Creates local class descriptor representing given class. */ + @SuppressWarnings("removal") private ObjectStreamClass(final Class cl) { this.cl = cl; name = cl.getName(); @@ -620,6 +625,7 @@ private ProtectionDomain noPermissionsDomain() { * ProtectionDomain that separate the concrete class {@code cl} * from its ancestor's declaring {@code cons}, or {@code null}. */ + @SuppressWarnings("removal") private ProtectionDomain[] getProtectionDomains(Constructor cons, Class cl) { ProtectionDomain[] domains = null; @@ -1130,6 +1136,7 @@ boolean hasReadResolveMethod() { * class is non-serializable or if the appropriate no-arg constructor is * inaccessible/unavailable. */ + @SuppressWarnings("removal") Object newInstance() throws InstantiationException, InvocationTargetException, UnsupportedOperationException @@ -1585,6 +1592,7 @@ private static Constructor getSerializableConstructor(Class cl) { * the not found ( which should never happen for correctly generated record * classes ). */ + @SuppressWarnings("removal") private static MethodHandle canonicalRecordCtr(Class cls) { assert cls.isRecord() : "Expected record, got: " + cls; PrivilegedAction pa = () -> { @@ -2655,6 +2663,7 @@ static final class RecordSupport { * and return * {@code Object} */ + @SuppressWarnings("removal") static MethodHandle deserializationCtr(ObjectStreamClass desc) { // check the cached value 1st MethodHandle mh = desc.deserializationCtr; diff --git a/src/java.base/share/classes/java/io/ObjectStreamField.java b/src/java.base/share/classes/java/io/ObjectStreamField.java index a984e509e5500..d8689c67c6963 100644 --- a/src/java.base/share/classes/java/io/ObjectStreamField.java +++ b/src/java.base/share/classes/java/io/ObjectStreamField.java @@ -214,6 +214,7 @@ public String getName() { * @return a {@code Class} object representing the type of the * serializable field */ + @SuppressWarnings("removal") @CallerSensitive public Class getType() { if (System.getSecurityManager() != null) { diff --git a/src/java.base/share/classes/java/io/RandomAccessFile.java b/src/java.base/share/classes/java/io/RandomAccessFile.java index 5f6bcfaa6ac32..c2176fe50c5d1 100644 --- a/src/java.base/share/classes/java/io/RandomAccessFile.java +++ b/src/java.base/share/classes/java/io/RandomAccessFile.java @@ -239,6 +239,7 @@ else if (mode.equals("rwd")) + "\" must be one of " + "\"r\", \"rw\", \"rws\"," + " or \"rwd\""); + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkRead(name); diff --git a/src/java.base/share/classes/java/lang/CharacterName.java b/src/java.base/share/classes/java/lang/CharacterName.java index 7dd83feecd1a1..307392a281070 100644 --- a/src/java.base/share/classes/java/lang/CharacterName.java +++ b/src/java.base/share/classes/java/lang/CharacterName.java @@ -48,7 +48,7 @@ class CharacterName { private final int[] hsIndices; // chain heads, hash indices into "cps" private CharacterName() { - try (DataInputStream dis = new DataInputStream(new InflaterInputStream( + try (@SuppressWarnings("removal") DataInputStream dis = new DataInputStream(new InflaterInputStream( AccessController.doPrivileged(new PrivilegedAction<>() { public InputStream run() { return getClass().getResourceAsStream("uniName.dat"); diff --git a/src/java.base/share/classes/java/lang/Class.java b/src/java.base/share/classes/java/lang/Class.java index 5f80fc6ead386..43479cd12a5a8 100644 --- a/src/java.base/share/classes/java/lang/Class.java +++ b/src/java.base/share/classes/java/lang/Class.java @@ -450,6 +450,7 @@ public static Class forName(String name, boolean initialize, throws ClassNotFoundException { Class caller = null; + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { // Reflective call to get caller class is only needed if a security manager @@ -519,6 +520,7 @@ private static native Class forName0(String name, boolean initialize, * @jls 12.3 Linking of Classes and Interfaces * @since 9 */ + @SuppressWarnings("removal") @CallerSensitive public static Class forName(Module module, String name) { Objects.requireNonNull(module); @@ -599,6 +601,7 @@ public static Class forName(Module module, String name) { * s.checkPackageAccess()} denies access to the package * of this class. */ + @SuppressWarnings("removal") @CallerSensitive @Deprecated(since="9") public T newInstance() @@ -892,6 +895,7 @@ public ClassLoader getClassLoader() { ClassLoader cl = getClassLoader0(); if (cl == null) return null; + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { ClassLoader.checkClassLoaderPermission(cl, Reflection.getCallerClass()); @@ -1357,6 +1361,7 @@ public Method getEnclosingMethod() throws SecurityException { // Perform access check final Class enclosingCandidate = enclosingInfo.getEnclosingClass(); + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { enclosingCandidate.checkMemberAccess(sm, Member.DECLARED, @@ -1513,6 +1518,7 @@ public Constructor getEnclosingConstructor() throws SecurityException { // Perform access check final Class enclosingCandidate = enclosingInfo.getEnclosingClass(); + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { enclosingCandidate.checkMemberAccess(sm, Member.DECLARED, @@ -1560,6 +1566,7 @@ public Class getDeclaringClass() throws SecurityException { final Class candidate = getDeclaringClass0(); if (candidate != null) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { candidate.checkPackageAccess(sm, @@ -1614,6 +1621,7 @@ public Class getEnclosingClass() throws SecurityException { } if (enclosingCandidate != null) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { enclosingCandidate.checkPackageAccess(sm, @@ -1840,6 +1848,7 @@ private boolean hasEnclosingMethodInfo() { * * @since 1.1 */ + @SuppressWarnings("removal") @CallerSensitive public Class[] getClasses() { SecurityManager sm = System.getSecurityManager(); @@ -1911,6 +1920,7 @@ public Class[] run() { */ @CallerSensitive public Field[] getFields() throws SecurityException { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.PUBLIC, Reflection.getCallerClass(), true); @@ -2001,6 +2011,7 @@ public Field[] getFields() throws SecurityException { */ @CallerSensitive public Method[] getMethods() throws SecurityException { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.PUBLIC, Reflection.getCallerClass(), true); @@ -2041,6 +2052,7 @@ public Method[] getMethods() throws SecurityException { */ @CallerSensitive public Constructor[] getConstructors() throws SecurityException { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.PUBLIC, Reflection.getCallerClass(), true); @@ -2095,6 +2107,7 @@ public Constructor[] getConstructors() throws SecurityException { public Field getField(String name) throws NoSuchFieldException, SecurityException { Objects.requireNonNull(name); + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.PUBLIC, Reflection.getCallerClass(), true); @@ -2204,6 +2217,7 @@ public Field getField(String name) public Method getMethod(String name, Class... parameterTypes) throws NoSuchMethodException, SecurityException { Objects.requireNonNull(name); + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.PUBLIC, Reflection.getCallerClass(), true); @@ -2248,6 +2262,7 @@ public Method getMethod(String name, Class... parameterTypes) public Constructor getConstructor(Class... parameterTypes) throws NoSuchMethodException, SecurityException { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.PUBLIC, Reflection.getCallerClass(), true); @@ -2295,6 +2310,7 @@ public Constructor getConstructor(Class... parameterTypes) */ @CallerSensitive public Class[] getDeclaredClasses() throws SecurityException { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.DECLARED, Reflection.getCallerClass(), false); @@ -2347,6 +2363,7 @@ public Class[] getDeclaredClasses() throws SecurityException { */ @CallerSensitive public Field[] getDeclaredFields() throws SecurityException { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.DECLARED, Reflection.getCallerClass(), true); @@ -2408,6 +2425,7 @@ public Field[] getDeclaredFields() throws SecurityException { */ @CallerSensitive public RecordComponent[] getRecordComponents() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.DECLARED, Reflection.getCallerClass(), true); @@ -2478,6 +2496,7 @@ public RecordComponent[] getRecordComponents() { */ @CallerSensitive public Method[] getDeclaredMethods() throws SecurityException { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.DECLARED, Reflection.getCallerClass(), true); @@ -2528,6 +2547,7 @@ public Method[] getDeclaredMethods() throws SecurityException { */ @CallerSensitive public Constructor[] getDeclaredConstructors() throws SecurityException { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.DECLARED, Reflection.getCallerClass(), true); @@ -2580,6 +2600,7 @@ public Constructor[] getDeclaredConstructors() throws SecurityException { public Field getDeclaredField(String name) throws NoSuchFieldException, SecurityException { Objects.requireNonNull(name); + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.DECLARED, Reflection.getCallerClass(), true); @@ -2644,6 +2665,7 @@ public Field getDeclaredField(String name) public Method getDeclaredMethod(String name, Class... parameterTypes) throws NoSuchMethodException, SecurityException { Objects.requireNonNull(name); + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.DECLARED, Reflection.getCallerClass(), true); @@ -2722,6 +2744,7 @@ List getDeclaredPublicMethods(String name, Class... parameterTypes) { public Constructor getDeclaredConstructor(Class... parameterTypes) throws NoSuchMethodException, SecurityException { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkMemberAccess(sm, Member.DECLARED, Reflection.getCallerClass(), true); @@ -2968,6 +2991,7 @@ private boolean isOpenToCaller(String name, Class caller) { * @since 1.2 */ public java.security.ProtectionDomain getProtectionDomain() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(SecurityConstants.GET_PD_PERMISSION); @@ -3013,7 +3037,7 @@ java.security.ProtectionDomain protectionDomain() { * *

NOTE: should only be called if a SecurityManager is installed */ - private void checkMemberAccess(SecurityManager sm, int which, + private void checkMemberAccess(@SuppressWarnings("removal") SecurityManager sm, int which, Class caller, boolean checkProxyInterfaces) { /* Default policy allows access to all {@link Member#PUBLIC} members, * as well as access to classes that have the same class loader as the caller. @@ -3037,7 +3061,7 @@ private void checkMemberAccess(SecurityManager sm, int which, * * NOTE: this method should only be called if a SecurityManager is active */ - private void checkPackageAccess(SecurityManager sm, final ClassLoader ccl, + private void checkPackageAccess(@SuppressWarnings("removal") SecurityManager sm, final ClassLoader ccl, boolean checkProxyInterfaces) { final ClassLoader cl = getClassLoader0(); @@ -3066,7 +3090,7 @@ private void checkPackageAccess(SecurityManager sm, final ClassLoader ccl, * all classes provided must be loaded by the same ClassLoader * NOTE: this method does not support Proxy classes */ - private static void checkPackageAccessForPermittedSubclasses(SecurityManager sm, + private static void checkPackageAccessForPermittedSubclasses(@SuppressWarnings("removal") SecurityManager sm, final ClassLoader ccl, Class[] subClasses) { final ClassLoader cl = subClasses[0].getClassLoader0(); @@ -3762,6 +3786,7 @@ public boolean isRecord() { } // Fetches the factory for reflective objects + @SuppressWarnings("removal") private static ReflectionFactory getReflectionFactory() { if (reflectionFactory == null) { reflectionFactory = @@ -3794,6 +3819,7 @@ public T[] getEnumConstants() { * identical to getEnumConstants except that the result is * uncloned, cached, and shared by all callers. */ + @SuppressWarnings("removal") T[] getEnumConstantsShared() { T[] constants = enumConstants; if (constants == null) { @@ -4204,6 +4230,7 @@ public Class getNestHost() { return this; } // returning a different class requires a security check + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkPackageAccess(sm, @@ -4296,6 +4323,7 @@ public Class[] getNestMembers() { if (members.length > 1) { // If we return anything other than the current class we need // a security check + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkPackageAccess(sm, @@ -4493,6 +4521,7 @@ public Class[] getPermittedSubclasses() { } if (subClasses.length > 0) { // If we return some classes we need a security check: + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkPackageAccessForPermittedSubclasses(sm, diff --git a/src/java.base/share/classes/java/lang/ClassLoader.java b/src/java.base/share/classes/java/lang/ClassLoader.java index 7a17a678389f1..9c249df4ff8e3 100644 --- a/src/java.base/share/classes/java/lang/ClassLoader.java +++ b/src/java.base/share/classes/java/lang/ClassLoader.java @@ -365,6 +365,7 @@ private static Void checkCreateClassLoader(String name) { throw new IllegalArgumentException("name must be non-empty or null"); } + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkCreateClassLoader(); @@ -671,6 +672,7 @@ protected Object getClassLoadingLock(String className) { } // Invoked by the VM after loading class with this loader. + @SuppressWarnings("removal") private void checkPackageAccess(Class cls, ProtectionDomain pd) { final SecurityManager sm = System.getSecurityManager(); if (sm != null) { @@ -1791,6 +1793,7 @@ public static InputStream getSystemResourceAsStream(String name) { public final ClassLoader getParent() { if (parent == null) return null; + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { // Check access to the parent class loader @@ -1834,6 +1837,7 @@ public final Module getUnnamedModule() { */ @CallerSensitive public static ClassLoader getPlatformClassLoader() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); ClassLoader loader = getBuiltinPlatformClassLoader(); if (sm != null) { @@ -1933,6 +1937,7 @@ public static ClassLoader getSystemClassLoader() { default: // system fully initialized assert VM.isBooted() && scl != null; + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { checkClassLoaderPermission(scl, Reflection.getCallerClass()); @@ -2041,6 +2046,7 @@ static ClassLoader getClassLoader(Class caller) { * is not the same as or an ancestor of the given cl argument. */ static void checkClassLoaderPermission(ClassLoader cl, Class caller) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { // caller can be null if the VM is requesting it diff --git a/src/java.base/share/classes/java/lang/LiveStackFrame.java b/src/java.base/share/classes/java/lang/LiveStackFrame.java index aada8c8639c52..2462685f725d8 100644 --- a/src/java.base/share/classes/java/lang/LiveStackFrame.java +++ b/src/java.base/share/classes/java/lang/LiveStackFrame.java @@ -177,6 +177,7 @@ public static StackWalker getStackWalker() { * and it denies access to {@code RuntimePermission("getStackWalkerWithClassReference")}. */ public static StackWalker getStackWalker(Set options) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("liveStackFrames")); diff --git a/src/java.base/share/classes/java/lang/Module.java b/src/java.base/share/classes/java/lang/Module.java index c4ce97dd26d90..e1a37b67bd9e2 100644 --- a/src/java.base/share/classes/java/lang/Module.java +++ b/src/java.base/share/classes/java/lang/Module.java @@ -200,6 +200,7 @@ public String getName() { * If denied by the security manager */ public ClassLoader getClassLoader() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION); @@ -1462,6 +1463,7 @@ public Annotation[] getDeclaredAnnotations() { // cached class file with annotations private volatile Class moduleInfoClass; + @SuppressWarnings("removal") private Class moduleInfoClass() { Class clazz = this.moduleInfoClass; if (clazz != null) diff --git a/src/java.base/share/classes/java/lang/ModuleLayer.java b/src/java.base/share/classes/java/lang/ModuleLayer.java index 86fde6c7f135b..6cecfe6d38825 100644 --- a/src/java.base/share/classes/java/lang/ModuleLayer.java +++ b/src/java.base/share/classes/java/lang/ModuleLayer.java @@ -699,12 +699,14 @@ private static void checkConfiguration(Configuration cf, } private static void checkCreateClassLoaderPermission() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) sm.checkPermission(SecurityConstants.CREATE_CLASSLOADER_PERMISSION); } private static void checkGetClassLoaderPermission() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) sm.checkPermission(SecurityConstants.GET_CLASSLOADER_PERMISSION); diff --git a/src/java.base/share/classes/java/lang/Package.java b/src/java.base/share/classes/java/lang/Package.java index 500f22cebf2ed..adb3bb84a4b18 100644 --- a/src/java.base/share/classes/java/lang/Package.java +++ b/src/java.base/share/classes/java/lang/Package.java @@ -425,6 +425,7 @@ private Class getPackageInfo() { String cn = packageName() + ".package-info"; Module module = module(); PrivilegedAction pa = module::getClassLoader; + @SuppressWarnings("removal") ClassLoader loader = AccessController.doPrivileged(pa); Class c; if (loader != null) { diff --git a/src/java.base/share/classes/java/lang/ProcessBuilder.java b/src/java.base/share/classes/java/lang/ProcessBuilder.java index c909ca6789fba..8afb15d58a53a 100644 --- a/src/java.base/share/classes/java/lang/ProcessBuilder.java +++ b/src/java.base/share/classes/java/lang/ProcessBuilder.java @@ -348,6 +348,7 @@ public List command() { * @see System#getenv() */ public Map environment() { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) security.checkPermission(new RuntimePermission("getenv.*")); @@ -1092,6 +1093,7 @@ private Process start(Redirect[] redirects) throws IOException { // Throws IndexOutOfBoundsException if command is empty String prog = cmdarray[0]; + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) security.checkExec(prog); diff --git a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java index 3a05619e5b63e..67cb1e2e189e9 100644 --- a/src/java.base/share/classes/java/lang/ProcessHandleImpl.java +++ b/src/java.base/share/classes/java/lang/ProcessHandleImpl.java @@ -82,6 +82,7 @@ final class ProcessHandleImpl implements ProcessHandle { /** * The thread pool of "process reaper" daemon threads. */ + @SuppressWarnings("removal") private static final Executor processReaperExecutor = AccessController.doPrivileged((PrivilegedAction) () -> { // Initialize ThreadLocalRandom now to avoid using the smaller stack @@ -237,6 +238,7 @@ private ProcessHandleImpl(long pid, long startTime) { * @throws SecurityException if RuntimePermission("manageProcess") is not granted */ static Optional get(long pid) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("manageProcess")); @@ -277,6 +279,7 @@ public long pid() { * @throws SecurityException if RuntimePermission("manageProcess") is not granted */ public static ProcessHandleImpl current() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("manageProcess")); @@ -300,6 +303,7 @@ public static ProcessHandleImpl current() { * security policy */ public Optional parent() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("manageProcess")); @@ -418,6 +422,7 @@ public Stream children() { * @return a stream of ProcessHandles */ static Stream children(long pid) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("manageProcess")); @@ -438,6 +443,7 @@ static Stream children(long pid) { @Override public Stream descendants() { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("manageProcess")); diff --git a/src/java.base/share/classes/java/lang/PublicMethods.java b/src/java.base/share/classes/java/lang/PublicMethods.java index 31e87873387b2..d7c011451ef9b 100644 --- a/src/java.base/share/classes/java/lang/PublicMethods.java +++ b/src/java.base/share/classes/java/lang/PublicMethods.java @@ -88,6 +88,7 @@ Method[] toArray() { * Method (name, parameter types) tuple. */ private static final class Key { + @SuppressWarnings("removal") private static final ReflectionFactory reflectionFactory = AccessController.doPrivileged( new ReflectionFactory.GetReflectionFactoryAction()); diff --git a/src/java.base/share/classes/java/lang/Runtime.java b/src/java.base/share/classes/java/lang/Runtime.java index 5348bf4d7d402..ba6e82af70320 100644 --- a/src/java.base/share/classes/java/lang/Runtime.java +++ b/src/java.base/share/classes/java/lang/Runtime.java @@ -107,6 +107,7 @@ private Runtime() {} * @see #halt(int) */ public void exit(int status) { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkExit(status); @@ -207,6 +208,7 @@ public void exit(int status) { * @since 1.3 */ public void addShutdownHook(Thread hook) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("shutdownHooks")); @@ -235,6 +237,7 @@ public void addShutdownHook(Thread hook) { * @since 1.3 */ public boolean removeShutdownHook(Thread hook) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(new RuntimePermission("shutdownHooks")); @@ -270,6 +273,7 @@ public boolean removeShutdownHook(Thread hook) { * @since 1.3 */ public void halt(int status) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkExit(status); @@ -734,6 +738,7 @@ public void load(String filename) { } void load0(Class fromClass, String filename) { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkLink(filename); @@ -797,6 +802,7 @@ public void loadLibrary(String libname) { } void loadLibrary0(Class fromClass, String libname) { + @SuppressWarnings("removal") SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkLink(libname); diff --git a/src/java.base/share/classes/java/lang/SecurityManager.java b/src/java.base/share/classes/java/lang/SecurityManager.java index 8d04596f95425..bbed440dc3554 100644 --- a/src/java.base/share/classes/java/lang/SecurityManager.java +++ b/src/java.base/share/classes/java/lang/SecurityManager.java @@ -344,6 +344,7 @@ public class SecurityManager { */ public SecurityManager() { synchronized(SecurityManager.class) { + @SuppressWarnings("removal") SecurityManager sm = System.getSecurityManager(); if (sm != null) { // ask the currently installed security manager if we @@ -389,6 +390,7 @@ public SecurityManager() { * java.lang.Object) checkRead * @see java.security.AccessControlContext AccessControlContext */ + @SuppressWarnings("removal") public Object getSecurityContext() { return AccessController.getContext(); } @@ -408,6 +410,7 @@ public Object getSecurityContext() { * {@code null}. * @since 1.2 */ + @SuppressWarnings("removal") public void checkPermission(Permission perm) { java.security.AccessController.checkPermission(perm); } @@ -443,6 +446,7 @@ public void checkPermission(Permission perm) { * @see java.security.AccessControlContext#checkPermission(java.security.Permission) * @since 1.2 */ + @SuppressWarnings("removal") public void checkPermission(Permission perm, Object context) { if (context instanceof AccessControlContext) { ((AccessControlContext)context).checkPermission(perm); @@ -1336,6 +1340,7 @@ public void checkPackageAccess(String pkg) { * Do we need to update our property array? */ if (!packageAccessValid) { + @SuppressWarnings("removal") String tmpPropertyStr = AccessController.doPrivileged( new PrivilegedAction<>() { @@ -1435,6 +1440,7 @@ public void checkPackageDefinition(String pkg) { * Do we need to update our property array? */ if (!packageDefinitionValid) { + @SuppressWarnings("removal") String tmpPropertyStr = AccessController.doPrivileged( new PrivilegedAction<>() { diff --git a/src/java.base/share/classes/java/lang/StackWalker.java b/src/java.base/share/classes/java/lang/StackWalker.java index d1d28b83cc54a..9ef0c92bb6886 100644 --- a/src/java.base/share/classes/java/lang/StackWalker.java +++ b/src/java.base/share/classes/java/lang/StackWalker.java @@ -418,6 +418,7 @@ private StackWalker(EnumSet