diff options
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/io/natFileDescriptorPosix.cc | 4 | ||||
-rw-r--r-- | libjava/java/lang/Win32Process.java | 5 | ||||
-rw-r--r-- | libjava/java/net/natPlainDatagramSocketImpl.cc | 5 | ||||
-rw-r--r-- | libjava/java/net/natPlainSocketImpl.cc | 6 |
4 files changed, 18 insertions, 2 deletions
diff --git a/libjava/java/io/natFileDescriptorPosix.cc b/libjava/java/io/natFileDescriptorPosix.cc index 5352f99..bfe0009 100644 --- a/libjava/java/io/natFileDescriptorPosix.cc +++ b/libjava/java/io/natFileDescriptorPosix.cc @@ -17,7 +17,6 @@ details. */ #include <string.h> #include <sys/stat.h> #include <sys/param.h> -#include <fcntl.h> #ifdef HAVE_SYS_IOCTL_H #define BSD_COMP /* Get FIONREAD on Solaris2. */ @@ -122,6 +121,9 @@ java::io::FileDescriptor::open (jstring path, jint jflags) sprintf (msg, "%s (%s)", buf, strerror (errno)); throw new FileNotFoundException (JvNewStringLatin1 (msg)); } + + _Jv_platform_close_on_exec (fd); + return fd; } diff --git a/libjava/java/lang/Win32Process.java b/libjava/java/lang/Win32Process.java index 00ee6b2..0af2457 100644 --- a/libjava/java/lang/Win32Process.java +++ b/libjava/java/lang/Win32Process.java @@ -21,6 +21,11 @@ import java.io.IOException; // This is entirely internal to our implementation. +// NOTE: when this is implemented, we'll need to add +// HANDLE_FLAG_INHERIT in FileDescriptor and other places, to make +// sure that file descriptors aren't inherited by the child process. +// See _Jv_platform_close_on_exec. + // This file is copied to `ConcreteProcess.java' before compilation. // Hence the class name apparently does not match the file name. final class ConcreteProcess extends Process diff --git a/libjava/java/net/natPlainDatagramSocketImpl.cc b/libjava/java/net/natPlainDatagramSocketImpl.cc index 628ac62..81e17cc 100644 --- a/libjava/java/net/natPlainDatagramSocketImpl.cc +++ b/libjava/java/net/natPlainDatagramSocketImpl.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000 Free Software Foundation +/* Copyright (C) 1999, 2000, 2002 Free Software Foundation This file is part of libgcj. @@ -185,6 +185,9 @@ java::net::PlainDatagramSocketImpl::create () char* strerr = strerror (errno); throw new java::net::SocketException (JvNewStringUTF (strerr)); } + + _Jv_platform_close_on_exec (sock); + fnum = sock; fd = new java::io::FileDescriptor (sock); } diff --git a/libjava/java/net/natPlainSocketImpl.cc b/libjava/java/net/natPlainSocketImpl.cc index 99eb80b..dd8d2ccd 100644 --- a/libjava/java/net/natPlainSocketImpl.cc +++ b/libjava/java/net/natPlainSocketImpl.cc @@ -232,6 +232,9 @@ java::net::PlainSocketImpl::create (jboolean stream) char* strerr = strerror (errno); throw new java::io::IOException (JvNewStringUTF (strerr)); } + + _Jv_platform_close_on_exec (sock); + fnum = sock; fd = new java::io::FileDescriptor (sock); } @@ -374,6 +377,9 @@ java::net::PlainSocketImpl::accept (java::net::PlainSocketImpl *s) new_socket = _Jv_accept (fnum, (sockaddr*) &u, &addrlen); if (new_socket < 0) goto error; + + _Jv_platform_close_on_exec (new_socket); + jbyteArray raddr; jint rport; if (u.address.sin_family == AF_INET) |