diff options
author | Tom Tromey <tromey@redhat.com> | 2006-04-20 15:46:40 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2006-04-20 15:46:40 +0000 |
commit | 45c792f50b74194c1c3b1038929c1656971bea1b (patch) | |
tree | 6466a6a7c75e3c84b76b1f5c41080183ef02f6c6 /libjava/gnu/java/net | |
parent | 455f78d9c657552de3023f9ffbb3fa791f1cf62c (diff) | |
download | gcc-45c792f50b74194c1c3b1038929c1656971bea1b.zip gcc-45c792f50b74194c1c3b1038929c1656971bea1b.tar.gz gcc-45c792f50b74194c1c3b1038929c1656971bea1b.tar.bz2 |
re PR libgcj/21941 (NPE in Socket.connect())
PR libgcj/21941:
* gnu/java/net/natPlainDatagramSocketImplPosix.cc (send): Throw
UnknownHostException if needed.
* gnu/java/net/natPlainSocketImplPosix.cc (connect): Throw
UnknownHostException if needed.
From-SVN: r113118
Diffstat (limited to 'libjava/gnu/java/net')
-rw-r--r-- | libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc | 9 | ||||
-rw-r--r-- | libjava/gnu/java/net/natPlainSocketImplPosix.cc | 8 |
2 files changed, 13 insertions, 4 deletions
diff --git a/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc b/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc index ada5fd1..96b374d 100644 --- a/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc +++ b/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2003, 2005 Free Software Foundation +/* Copyright (C) 2003, 2005, 2006 Free Software Foundation This file is part of libgcj. @@ -38,6 +38,7 @@ details. */ #include <java/lang/Object.h> #include <java/lang/Boolean.h> #include <java/lang/Integer.h> +#include <java/net/UnknownHostException.h> union SockAddr { @@ -291,7 +292,11 @@ gnu::java::net::PlainDatagramSocketImpl::send (::java::net::DatagramPacket *p) // FIXME: Deal with Multicast and if the socket is connected. jint rport = p->getPort(); union SockAddr u; - jbyteArray haddress = p->getAddress()->addr; + ::java::net::InetAddress *host = p->getAddress(); + if (! host) + throw new ::java::net::UnknownHostException(p->toString()); + + jbyteArray haddress = host->addr; jbyte *bytes = elements (haddress); int len = haddress->length; struct sockaddr *ptr = (struct sockaddr *) &u.address; diff --git a/libjava/gnu/java/net/natPlainSocketImplPosix.cc b/libjava/gnu/java/net/natPlainSocketImplPosix.cc index be9437c..28707db 100644 --- a/libjava/gnu/java/net/natPlainSocketImplPosix.cc +++ b/libjava/gnu/java/net/natPlainSocketImplPosix.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2003, 2004, 2005 Free Software Foundation +/* Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation This file is part of libgcj. @@ -51,6 +51,7 @@ details. */ #include <java/lang/NullPointerException.h> #include <java/lang/ArrayIndexOutOfBoundsException.h> #include <java/lang/IllegalArgumentException.h> +#include <java/net/UnknownHostException.h> union SockAddr { @@ -136,10 +137,13 @@ gnu::java::net::PlainSocketImpl::bind (::java::net::InetAddress *host, jint lpor void gnu::java::net::PlainSocketImpl::connect (::java::net::SocketAddress *addr, - jint timeout) + jint timeout) { ::java::net::InetSocketAddress *tmp = (::java::net::InetSocketAddress*) addr; ::java::net::InetAddress *host = tmp->getAddress(); + if (! host) + throw new ::java::net::UnknownHostException(tmp->toString()); + jint rport = tmp->getPort(); // Set the SocketImpl's address and port fields before we try to |