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 | |
parent | 455f78d9c657552de3023f9ffbb3fa791f1cf62c (diff) | |
download | gcc-45c792f50b74194c1c3b1038929c1656971bea1b.tar.gz |
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')
-rw-r--r-- | libjava/ChangeLog | 8 | ||||
-rw-r--r-- | libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc | 9 | ||||
-rw-r--r-- | libjava/gnu/java/net/natPlainSocketImplPosix.cc | 8 |
3 files changed, 21 insertions, 4 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 30b03061db3..215ea00f808 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,11 @@ +2006-04-20 Tom Tromey <tromey@redhat.com> + + PR libgcj/21941: + * gnu/java/net/natPlainDatagramSocketImplPosix.cc (send): Throw + UnknownHostException if needed. + * gnu/java/net/natPlainSocketImplPosix.cc (connect): Throw + UnknownHostException if needed. + 2006-04-19 Tom Tromey <tromey@redhat.com> * Makefile.in: Rebuilt. diff --git a/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc b/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc index ada5fd160c5..96b374db5f5 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 be9437cd7db..28707db4de8 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 |