]> Git Repo - qemu.git/commit
linux-user/syscall: Fix do_ioctl_ifconf() for 64 bit targets.
authorStefan <[email protected]>
Sat, 9 Jan 2021 18:59:42 +0000 (19:59 +0100)
committerLaurent Vivier <[email protected]>
Sat, 13 Feb 2021 21:50:50 +0000 (22:50 +0100)
commit4df7b7fac84ba570bb33970659296555896232b6
tree5ded9d77a9416543c7e6131c81a757739b4736b3
parentccc5ccc17f8cfbfd87d9aede5d12a2d47c56e712
linux-user/syscall: Fix do_ioctl_ifconf() for 64 bit targets.

The sizeof(struct ifreq) is 40 for 64 bit and 32 for 32 bit architectures.
This structure contains a union of other structures, of which struct ifmap
is the biggest for 64 bit architectures. Calling ioclt(…, SIOCGIFCONF, …)
fills a struct sockaddr of that union, and do_ioctl_ifconf() only considered
that struct sockaddr for the size of the union, which has the same size as
struct ifmap on 32 bit architectures. So do_ioctl_ifconf() assumed a wrong
size of 32 for struct ifreq instead of the correct size of 40 on 64 bit
architectures.

The fix makes do_ioctl_ifconf() handle struct ifmap as the biggest part of
the union, treating struct ifreq with the correct size.

Signed-off-by: Stefan <[email protected]>
Message-Id: <60AA0765-53DD-43D1-A3D2-75F1778526F6@vodafonemail.de>
Signed-off-by: Laurent Vivier <[email protected]>
linux-user/syscall.c
This page took 0.025561 seconds and 4 git commands to generate.