* miscfuncs.cc (check_iovec_for_read): Don't check buffer when zero length
iov_len. (check_iovec_for_write): Ditto. * fhandler.h (fhandler_base::readv): New method. (fhandler_base::writev): Ditto. * fhandler.cc (fhandler_base::readv): New method. (fhandler_base::writev): Ditto. * syscalls.cc (_read): Delegate to readv(2). (_write): Ditto, mutatis mutandi. (readv): Rewrite, based on the old _read code, to use the new fhandler_base::readv method. Improve access mode handling and ensure all calls reach the final strace statement. (writev): Ditto, mutatis mutandi. * include/sys/uio.h (struct iovec): Change field types to match SUSv3. * winsup.h (check_iovec_for_read): New function. (check_iovec_for_write): Ditto. * miscfuncs.cc (check_iovec_for_read): Ditto. (check_iovec_for_write): Ditto.
This commit is contained in:
@ -221,6 +221,10 @@ int __stdcall __check_invalid_read_ptr_errno (const void *s, unsigned sz) __attr
|
||||
#define check_null_invalid_struct_errno(s) \
|
||||
__check_null_invalid_struct_errno ((s), sizeof (*(s)))
|
||||
|
||||
struct iovec;
|
||||
ssize_t check_iovec_for_read (const struct iovec *, int) __attribute__ ((regparm(2)));
|
||||
ssize_t check_iovec_for_write (const struct iovec *, int) __attribute__ ((regparm(2)));
|
||||
|
||||
#define set_winsock_errno() __set_winsock_errno (__FUNCTION__, __LINE__)
|
||||
void __set_winsock_errno (const char *fn, int ln) __attribute__ ((regparm(2)));
|
||||
|
||||
|
Reference in New Issue
Block a user