[PATCH] please review. file descriptor passing for libc_r.
Daniel Eischen
eischen at vigrid.com
Sat Nov 29 21:41:08 PST 2003
On Sat, 29 Nov 2003, Alfred Perlstein wrote:
> * Daniel Eischen <eischen at vigrid.com> [031129 14:57] wrote:
> > >
> > > What do you suggest we do?
> >
> > Just close the file:
> >
> > if ((fd < 0) || (fd >= _thread_dtablesize) ||
> > (fd == _thread_kern_pipe[0]) || (fd == _thread_kern_pipe[1])) {
> > /*
> > * Don't allow silly programs to close the kernel pipe
> > * and non-active descriptors.
> > */
> > errno = EBADF;
> > ret = -1;
> > }
> > else if (_thread_fd_table[fd] == NULL)
> > ret = __sys_close(fd);
> > else {
> > ...
> > }
>
> So remove the check? do you approve? does re@ approve?
You should just call close() if the fd has not been initialized.
Index: uthread_close.c
===================================================================
RCS file: /opt/FreeBSD/cvs/src/lib/libc_r/uthread/uthread_close.c,v
retrieving revision 1.16
diff -u -r1.16 uthread_close.c
--- uthread_close.c 9 Jun 2003 16:45:37 -0000 1.16
+++ uthread_close.c 30 Nov 2003 09:05:52 -0000
@@ -50,8 +50,7 @@
struct fd_table_entry *entry;
if ((fd < 0) || (fd >= _thread_dtablesize) ||
- (fd == _thread_kern_pipe[0]) || (fd == _thread_kern_pipe[1]) ||
- (_thread_fd_table[fd] == NULL)) {
+ (fd == _thread_kern_pipe[0]) || (fd == _thread_kern_pipe[1])) {
/*
* Don't allow silly programs to close the kernel pipe
* and non-active descriptors.
@@ -59,6 +58,8 @@
errno = EBADF;
ret = -1;
}
+ else if (_thread_fd_table[fd] == NULL)
+ ret = __sys_close(fd);
/*
* Lock the file descriptor while the file is closed and get
* the file descriptor status:
--
Dan Eischen
More information about the freebsd-current
mailing list