src/java.base/share/classes/java/net/ServerSocket.java
changeset 58610 94710bb2a5bb
parent 58242 94bb65cb37d3
child 58679 9c3209ff7550
child 58692 04946947ca79
--- a/src/java.base/share/classes/java/net/ServerSocket.java	Mon Oct 07 17:12:22 2019 +0200
+++ b/src/java.base/share/classes/java/net/ServerSocket.java	Mon Mar 25 17:15:27 2019 +0000
@@ -32,6 +32,7 @@
 import java.util.Set;
 import java.util.Collections;
 
+import sun.security.util.SecurityConstants;
 import sun.net.PlatformSocketImpl;
 
 /**
@@ -73,13 +74,25 @@
      *
      * @throws     NullPointerException if impl is {@code null}.
      *
+     * @throws     SecurityException if a security manager is set and
+     *             its {@code checkPermission} method doesn't allow
+     *             {@code NetPermission("setSocketImpl")}.
      * @since 12
      */
     protected ServerSocket(SocketImpl impl) {
         Objects.requireNonNull(impl);
+        checkPermission();
         this.impl = impl;
     }
 
+    private static Void checkPermission() {
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) {
+            sm.checkPermission(SecurityConstants.SET_SOCKETIMPL_PERMISSION);
+        }
+        return null;
+    }
+
     /**
      * Creates an unbound server socket.
      *