From 2082fe2919cef92399f22c887248fda3727069e7 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 3 Aug 2001 16:06:33 +0000 Subject: 2001-08-03 Joel Sherrill * libc/libio_sockets.c (rtems_bsdnet_fdToSocket): Per bug report from Gene Smith , enhanced the error checking to account for a socket being closed. --- c/src/lib/ChangeLog | 6 ++++++ c/src/lib/libc/libio_sockets.c | 8 ++++++++ 2 files changed, 14 insertions(+) (limited to 'c/src/lib') diff --git a/c/src/lib/ChangeLog b/c/src/lib/ChangeLog index 209e5ec814..ac0322b7bf 100644 --- a/c/src/lib/ChangeLog +++ b/c/src/lib/ChangeLog @@ -1,3 +1,9 @@ +2001-08-03 Joel Sherrill + + * libc/libio_sockets.c (rtems_bsdnet_fdToSocket): Per bug + report from Gene Smith , enhanced the + error checking to account for a socket being closed. + 2001-05-25 Joel Sherrill * libc/base_fs.c: Deleted chmod() now that IMFS creates the diff --git a/c/src/lib/libc/libio_sockets.c b/c/src/lib/libc/libio_sockets.c index 1b0ebb6ba0..a1e98c8b0a 100644 --- a/c/src/lib/libc/libio_sockets.c +++ b/c/src/lib/libc/libio_sockets.c @@ -31,11 +31,19 @@ struct socket *rtems_bsdnet_fdToSocket( { rtems_libio_t *iop; + /* same as rtems_libio_check_fd(_fd) but different return */ if ((unsigned32)fd >= rtems_libio_number_iops) { errno = EBADF; return NULL; } iop = &rtems_libio_iops[fd]; + + /* same as rtems_libio_check_is_open(iop) but different return */ + if ((iop->flags & LIBIO_FLAGS_OPEN) == 0) { + errno = EBADF; + return NULL; + } + if (iop->data1 == NULL) errno = EBADF; return iop->data1; -- cgit v1.2.3