< prev index next >

src/java.base/share/classes/sun/nio/ch/ServerSocketAdaptor.java

Print this page
rev 52995 : 8223326: Regression introduced by CPU sync: java.security.AccessControlException: access denied ("java.net.NetPermission" "setSocketImpl")
Reviewed-by: dfuchs, alanb
Contributed-by: Alan Bateman <alan.bateman@oracle.com>

@@ -36,11 +36,13 @@
 import java.net.StandardSocketOptions;
 import java.nio.channels.IllegalBlockingModeException;
 import java.nio.channels.NotYetBoundException;
 import java.nio.channels.ServerSocketChannel;
 import java.nio.channels.SocketChannel;
-
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 
 // Make a server-socket channel look like a server socket.
 //
 // The methods in this class are defined in exactly the same order as in
 // java.net.ServerSocket so as to simplify tracking future changes to that

@@ -55,14 +57,15 @@
 
     // Timeout "option" value for accepts
     private volatile int timeout;
 
     public static ServerSocket create(ServerSocketChannelImpl ssc) {
+        PrivilegedExceptionAction<ServerSocket> pa = () -> new ServerSocketAdaptor(ssc);
         try {
-            return new ServerSocketAdaptor(ssc);
-        } catch (IOException x) {
-            throw new Error(x);
+            return AccessController.doPrivileged(pa);
+        } catch (PrivilegedActionException pae) {
+            throw new InternalError("Should not reach here", pae);
         }
     }
 
     // ## super will create a useless impl
     private ServerSocketAdaptor(ServerSocketChannelImpl ssc) throws IOException {
< prev index next >