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>
This commit is contained in:
deischen 2001-10-21 18:23:50 +00:00
parent 18c0fc80c5
commit 359955a195

View File

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