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
This commit is contained in:
Tom Tromey 2006-04-20 15:46:40 +00:00 committed by Tom Tromey
parent 455f78d9c6
commit 45c792f50b
3 changed files with 21 additions and 4 deletions

View File

@ -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.

View File

@ -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;

View File

@ -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