diff options
| author | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2012-02-08 14:47:56 +0000 |
|---|---|---|
| committer | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2012-02-08 14:47:56 +0000 |
| commit | d2dc6dc321a13c8a3ba2d07f2b780b269f33782b (patch) | |
| tree | 95d828b81aeb12f7a5c683c31ca42abd1ce3238c /java | |
| parent | fa85ef862acaa77f816e29f935d4603906905af4 (diff) | |
| download | classpath-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.java | 22 |
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 { |
