summaryrefslogtreecommitdiffstats
path: root/lib/libc_r
diff options
context:
space:
mode:
authordeischen <deischen@FreeBSD.org>2001-10-21 18:23:50 +0000
committerdeischen <deischen@FreeBSD.org>2001-10-21 18:23:50 +0000
commit359955a1956383c238da1fab2a6b379f9ce90dd7 (patch)
treee1272156fb3445e9c94eb638512e31562b21a014 /lib/libc_r
parent18c0fc80c555a954eee3aa8da3188e269f9ff9b6 (diff)
downloadFreeBSD-src-359955a1956383c238da1fab2a6b379f9ce90dd7.zip
FreeBSD-src-359955a1956383c238da1fab2a6b379f9ce90dd7.tar.gz
In the words of the submitter:
In libc_r, if _FDLOCKS_ENABLED is not defined, there is no guarantee in many of the sycall wrappers that _thread_fd_table[fd] is initialized. This causes problems for programs that pass in file descriptors and execve() another program; when the exec'ed program tries to do an fcntl() or other syscall on the passed-in fd, it fails. Add calls to initialize the FD table entry for _thread_fd_lock and _thread_fd_lock_debug. Submitted by: Peter S. Housel <housel@acm.org>
Diffstat (limited to 'lib/libc_r')
-rw-r--r--lib/libc_r/uthread/uthread_fd.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/libc_r/uthread/uthread_fd.c b/lib/libc_r/uthread/uthread_fd.c
index 98a70e0..060515a 100644
--- a/lib/libc_r/uthread/uthread_fd.c
+++ b/lib/libc_r/uthread/uthread_fd.c
@@ -1005,7 +1005,11 @@ _thread_fd_unlock(int fd, int lock_type)
int
_thread_fd_lock(int fd, int lock_type, struct timespec * timeout)
{
- return (0);
+ /*
+ * Insure that the file descriptor table is initialized for this
+ * entry:
+ */
+ return (_thread_fd_table_init(fd));
}
void
@@ -1017,7 +1021,11 @@ int
_thread_fd_lock_debug(int fd, int lock_type, struct timespec * timeout,
char *fname, int lineno)
{
- return (0);
+ /*
+ * Insure that the file descriptor table is initialized for this
+ * entry:
+ */
+ return (_thread_fd_table_init(fd));
}
void
OpenPOWER on IntegriCloud