summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorAndrew John Hughes <gnu_andrew@member.fsf.org>2012-02-08 14:47:56 +0000
committerAndrew John Hughes <gnu_andrew@member.fsf.org>2012-02-08 14:47:56 +0000
commitd2dc6dc321a13c8a3ba2d07f2b780b269f33782b (patch)
tree95d828b81aeb12f7a5c683c31ca42abd1ce3238c /java
parentfa85ef862acaa77f816e29f935d4603906905af4 (diff)
downloadclasspath-d2dc6dc321a13c8a3ba2d07f2b780b269f33782b.tar.gz
PR classpath/42390: Add missing security checks in DatagramSocket.connect.
2012-02-06 Andrew John Hughes <ahughes@redhat.com> PR classpath/42390 * java/net/DatagramSocket.java: (connect(InetAddress,int)): Add missing security checks which OpenJDK performs and we don't. It's possible to initialise a DatagramSocket with null so we should also ensure we are bound.
Diffstat (limited to 'java')
-rw-r--r--java/net/DatagramSocket.java22
1 files changed, 21 insertions, 1 deletions
diff --git a/java/net/DatagramSocket.java b/java/net/DatagramSocket.java
index 6ca9c42fe..baa572ce3 100644
--- a/java/net/DatagramSocket.java
+++ b/java/net/DatagramSocket.java
@@ -525,7 +525,27 @@ public class DatagramSocket
SecurityManager sm = System.getSecurityManager();
if (sm != null)
- sm.checkConnect(address.getHostAddress(), port);
+ {
+ if (address.isMulticastAddress())
+ sm.checkMulticast(address);
+ else
+ {
+ sm.checkConnect(address.getHostAddress(), port);
+ sm.checkAccept(address.getHostAddress(), port);
+ }
+ }
+
+ if (!isBound())
+ {
+ try
+ {
+ bind(new InetSocketAddress(0));
+ }
+ catch (SocketException e)
+ {
+ throw new Error("Binding socket failed.", e);
+ }
+ }
try
{