Update #3132. --- cpukit/libcsupport/include/rtems/libio_.h | 14 +++++++------- cpukit/libcsupport/src/read.c | 5 +++-- cpukit/libcsupport/src/write.c | 7 ++++--- testsuites/psxtests/psxfile02/init.c | 12 +++++++++--- 4 files changed, 23 insertions(+), 15 deletions(-)
diff --git a/cpukit/libcsupport/include/rtems/libio_.h b/cpukit/libcsupport/include/rtems/libio_.h index 85f9c8e0a5..9bd8a8979c 100644 --- a/cpukit/libcsupport/include/rtems/libio_.h +++ b/cpukit/libcsupport/include/rtems/libio_.h @@ -871,13 +871,6 @@ static inline ssize_t rtems_libio_iovec_eval( int v; rtems_libio_t *iop; - rtems_libio_check_fd( fd ); - iop = rtems_libio_iop( fd ); - rtems_libio_check_is_open( iop ); - rtems_libio_check_permissions_with_error( iop, flags, EBADF ); - - *iopp = iop; - /* * Argument validation on IO vector */ @@ -910,6 +903,13 @@ static inline ssize_t rtems_libio_iovec_eval( } } + rtems_libio_check_fd( fd ); + iop = rtems_libio_iop( fd ); + rtems_libio_check_is_open( iop ); + rtems_libio_check_permissions_with_error( iop, flags, EBADF ); + + *iopp = iop; + return total; } diff --git a/cpukit/libcsupport/src/read.c b/cpukit/libcsupport/src/read.c index a5df6a1140..dd3f0c7128 100644 --- a/cpukit/libcsupport/src/read.c +++ b/cpukit/libcsupport/src/read.c @@ -32,11 +32,12 @@ ssize_t read( { rtems_libio_t *iop; + rtems_libio_check_buffer( buffer ); + rtems_libio_check_count( count ); + rtems_libio_check_fd( fd ); iop = rtems_libio_iop( fd ); rtems_libio_check_is_open( iop ); - rtems_libio_check_buffer( buffer ); - rtems_libio_check_count( count ); rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF ); /* diff --git a/cpukit/libcsupport/src/write.c b/cpukit/libcsupport/src/write.c index c0119a54e4..8beea6494a 100644 --- a/cpukit/libcsupport/src/write.c +++ b/cpukit/libcsupport/src/write.c @@ -33,13 +33,14 @@ ssize_t write( size_t count ) { - rtems_libio_t *iop; + rtems_libio_t *iop; + + rtems_libio_check_buffer( buffer ); + rtems_libio_check_count( count ); rtems_libio_check_fd( fd ); iop = rtems_libio_iop( fd ); rtems_libio_check_is_open( iop ); - rtems_libio_check_buffer( buffer ); - rtems_libio_check_count( count ); rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF ); /* diff --git a/testsuites/psxtests/psxfile02/init.c b/testsuites/psxtests/psxfile02/init.c index fe74fec7d5..d66815203a 100644 --- a/testsuites/psxtests/psxfile02/init.c +++ b/testsuites/psxtests/psxfile02/init.c @@ -41,10 +41,16 @@ void do_with_fd( ) { struct stat stat_buff; - struct iovec vec[4]; + struct iovec vec[2]; + char buf[2][1]; off_t res; int status; + vec[0].iov_base = buf[0]; + vec[0].iov_len = sizeof(buf[0]); + vec[1].iov_base = buf[1]; + vec[1].iov_len = sizeof(buf[1]); + printf("ftruncate %s\n", description); status = ftruncate(fd, 40); rtems_test_assert( status == -1 ); @@ -88,13 +94,13 @@ void do_with_fd( rtems_test_assert( errno == EBADF ); printf("readv %s\n", description); - status = readv(fd, vec, 4); + status = readv(fd, vec, 2); rtems_test_assert( status == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); printf("writev %s\n", description); - status = writev(fd, vec, 4); + status = writev(fd, vec, 2); rtems_test_assert( status == -1 ); printf( "%d: %s\n", errno, strerror( errno ) ); rtems_test_assert( errno == EBADF ); -- 2.12.3 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel