Commit dab32b32 authored by Peter Maydell's avatar Peter Maydell Committed by Riku Voipio
Browse files

linux-user: Fix handling of iovec counts



In the kernel the length of an iovec is generally handled as
an unsigned long, not an integer; fix the parameter to
lock_iovec() accordingly.

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Signed-off-by: default avatarRiku Voipio <riku.voipio@linaro.org>
parent a008535b
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -3119,7 +3119,7 @@ static abi_long do_getsockopt(int sockfd, int level, int optname,
}

static struct iovec *lock_iovec(int type, abi_ulong target_addr,
                                int count, int copy)
                                abi_ulong count, int copy)
{
    struct target_iovec *target_vec;
    struct iovec *vec;
@@ -3132,7 +3132,7 @@ static struct iovec *lock_iovec(int type, abi_ulong target_addr,
        errno = 0;
        return NULL;
    }
    if (count < 0 || count > IOV_MAX) {
    if (count > IOV_MAX) {
        errno = EINVAL;
        return NULL;
    }
@@ -3207,7 +3207,7 @@ static struct iovec *lock_iovec(int type, abi_ulong target_addr,
}

static void unlock_iovec(struct iovec *vec, abi_ulong target_addr,
                         int count, int copy)
                         abi_ulong count, int copy)
{
    struct target_iovec *target_vec;
    int i;
@@ -3462,7 +3462,7 @@ static abi_long do_sendrecvmsg_locked(int fd, struct target_msghdr *msgp,
{
    abi_long ret, len;
    struct msghdr msg;
    int count;
    abi_ulong count;
    struct iovec *vec;
    abi_ulong target_vec;