aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorJeff Sturm <jsturm@one-point.com>2002-06-18 16:25:00 +0000
committerJeff Sturm <jsturm@gcc.gnu.org>2002-06-18 16:25:00 +0000
commit347258aef04597a20eda7f59ee2759e952e87f4e (patch)
treeee4f04c77d2441ffc0343c15cf24de335f47319d /libjava/java
parent18ba380b3a22e6e76d6515c16931611a0bcbf7e6 (diff)
downloadgcc-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
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/net/natPlainDatagramSocketImpl.cc5
-rw-r--r--libjava/java/net/natPlainSocketImpl.cc10
2 files changed, 11 insertions, 4 deletions
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 =