* 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:
@ -736,7 +736,9 @@ fhandler_socket::recvmsg (struct msghdr *msg, int flags)
|
||||
p = buf;
|
||||
while (nb > 0)
|
||||
{
|
||||
ssize_t cnt = min(nb, iov->iov_len);
|
||||
ssize_t cnt = iov->iov_len;
|
||||
if (nb < cnt)
|
||||
cnt = nb;
|
||||
memcpy (iov->iov_base, p, cnt);
|
||||
p += cnt;
|
||||
nb -= cnt;
|
||||
|
Reference in New Issue
Block a user