alloca one extra byte sockets
target_to_host_sockaddr() may increase the lenth with 1 byte for AF_UNIX sockets so allocate 1 extra byte. Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
33a29b51c9
commit
2dd08dfd9a
@ -1984,7 +1984,7 @@ static abi_long do_connect(int sockfd, abi_ulong target_addr,
|
|||||||
return -TARGET_EINVAL;
|
return -TARGET_EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
addr = alloca(addrlen);
|
addr = alloca(addrlen+1);
|
||||||
|
|
||||||
ret = target_to_host_sockaddr(addr, target_addr, addrlen);
|
ret = target_to_host_sockaddr(addr, target_addr, addrlen);
|
||||||
if (ret)
|
if (ret)
|
||||||
@ -2005,7 +2005,7 @@ static abi_long do_sendrecvmsg_locked(int fd, struct target_msghdr *msgp,
|
|||||||
|
|
||||||
if (msgp->msg_name) {
|
if (msgp->msg_name) {
|
||||||
msg.msg_namelen = tswap32(msgp->msg_namelen);
|
msg.msg_namelen = tswap32(msgp->msg_namelen);
|
||||||
msg.msg_name = alloca(msg.msg_namelen);
|
msg.msg_name = alloca(msg.msg_namelen+1);
|
||||||
ret = target_to_host_sockaddr(msg.msg_name, tswapal(msgp->msg_name),
|
ret = target_to_host_sockaddr(msg.msg_name, tswapal(msgp->msg_name),
|
||||||
msg.msg_namelen);
|
msg.msg_namelen);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
@ -2268,7 +2268,7 @@ static abi_long do_sendto(int fd, abi_ulong msg, size_t len, int flags,
|
|||||||
if (!host_msg)
|
if (!host_msg)
|
||||||
return -TARGET_EFAULT;
|
return -TARGET_EFAULT;
|
||||||
if (target_addr) {
|
if (target_addr) {
|
||||||
addr = alloca(addrlen);
|
addr = alloca(addrlen+1);
|
||||||
ret = target_to_host_sockaddr(addr, target_addr, addrlen);
|
ret = target_to_host_sockaddr(addr, target_addr, addrlen);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
unlock_user(host_msg, msg, 0);
|
unlock_user(host_msg, msg, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user