diff options
author | Jeff Sturm <jsturm@one-point.com> | 2002-06-18 16:25:00 +0000 |
---|---|---|
committer | Jeff Sturm <jsturm@gcc.gnu.org> | 2002-06-18 16:25:00 +0000 |
commit | 347258aef04597a20eda7f59ee2759e952e87f4e (patch) | |
tree | ee4f04c77d2441ffc0343c15cf24de335f47319d | |
parent | 18ba380b3a22e6e76d6515c16931611a0bcbf7e6 (diff) | |
download | gcc-347258aef04597a20eda7f59ee2759e952e87f4e.zip gcc-347258aef04597a20eda7f59ee2759e952e87f4e.tar.gz gcc-347258aef04597a20eda7f59ee2759e952e87f4e.tar.bz2 |
natPlainDatagramSocketImpl.cc (receive): Check bounds of argument to FD_SET.
* java/net/natPlainDatagramSocketImpl.cc (receive):
Check bounds of argument to FD_SET.
(setOption): Throw exception if socket is closed.
* java/net/natPlainSocketImpl.cc (accept, read):
Check bounds of argument to FD_SET.
(setOption): Throw exception if socket is closed.
From-SVN: r54750
-rw-r--r-- | libjava/ChangeLog | 10 | ||||
-rw-r--r-- | libjava/java/net/natPlainDatagramSocketImpl.cc | 5 | ||||
-rw-r--r-- | libjava/java/net/natPlainSocketImpl.cc | 10 |
3 files changed, 21 insertions, 4 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index d189b02..9de49b0 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,13 @@ +2002-06-18 Jeff Sturm <jsturm@one-point.com> + + * java/net/natPlainDatagramSocketImpl.cc (receive): + Check bounds of argument to FD_SET. + (setOption): Throw exception if socket is closed. + + * java/net/natPlainSocketImpl.cc (accept, read): + Check bounds of argument to FD_SET. + (setOption): Throw exception if socket is closed. + 2002-06-18 Tom Tromey <tromey@redhat.com> * gcj/javaprims.h: Updated class declaration list. diff --git a/libjava/java/net/natPlainDatagramSocketImpl.cc b/libjava/java/net/natPlainDatagramSocketImpl.cc index 3c318d7..4db9912 100644 --- a/libjava/java/net/natPlainDatagramSocketImpl.cc +++ b/libjava/java/net/natPlainDatagramSocketImpl.cc @@ -361,7 +361,7 @@ java::net::PlainDatagramSocketImpl::receive (java::net::DatagramPacket *p) // FIXME: implement timeout support for Win32 #ifndef WIN32 // Do timeouts via select since SO_RCVTIMEO is not always available. - if (timeout > 0) + if (timeout > 0 && fnum >= 0 && fnum < FD_SETSIZE) { fd_set rset; struct timeval tv; @@ -501,6 +501,9 @@ java::net::PlainDatagramSocketImpl::setOption (jint optID, int val; socklen_t val_len = sizeof (val); + if (fnum < 0) + throw new java::net::SocketException (JvNewStringUTF ("Socket closed")); + if (_Jv_IsInstanceOf (value, &BooleanClass)) { java::lang::Boolean *boolobj = diff --git a/libjava/java/net/natPlainSocketImpl.cc b/libjava/java/net/natPlainSocketImpl.cc index e16c372..4a75e98 100644 --- a/libjava/java/net/natPlainSocketImpl.cc +++ b/libjava/java/net/natPlainSocketImpl.cc @@ -369,7 +369,7 @@ java::net::PlainSocketImpl::accept (java::net::PlainSocketImpl *s) // FIXME: implement timeout support for Win32 #ifndef WIN32 // Do timeouts via select since SO_RCVTIMEO is not always available. - if (timeout > 0) + if (timeout > 0 && fnum >= 0 && fnum < FD_SETSIZE) { fd_set rset; struct timeval tv; @@ -516,7 +516,7 @@ java::net::PlainSocketImpl::read(void) // FIXME: implement timeout support for Win32 #ifndef WIN32 // Do timeouts via select. - if (timeout > 0) + if (timeout > 0 && fnum >= 0 && fnum < FD_SETSIZE) { // Create the file descriptor set. fd_set read_fds; @@ -575,7 +575,7 @@ java::net::PlainSocketImpl::read(jbyteArray buffer, jint offset, jint count) // FIXME: implement timeout support for Win32 #ifndef WIN32 // Do timeouts via select. - if (timeout > 0) + if (timeout > 0 && fnum >= 0 && fnum < FD_SETSIZE) { // Create the file descriptor set. fd_set read_fds; @@ -662,6 +662,7 @@ java::net::PlainSocketImpl::available(void) #if defined(HAVE_SELECT) if (! num_set) + if (! num_set && fnum >= 0 && fnum < FD_SETSIZE) { fd_set rd; FD_ZERO (&rd); @@ -689,6 +690,9 @@ java::net::PlainSocketImpl::setOption (jint optID, java::lang::Object *value) int val; socklen_t val_len = sizeof (val); + if (fnum < 0) + throw new java::net::SocketException (JvNewStringUTF ("Socket closed")); + if (_Jv_IsInstanceOf (value, &java::lang::Boolean::class$)) { java::lang::Boolean *boolobj = |