linux-user: Handle brk() attempts with very large sizes
commitef4330c23bb47b97a859dbdbae1c784fd2ca402f
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 22 Jul 2016 12:41:52 +0000 (22 13:41 +0100)
committerRiku Voipio <riku.voipio@linaro.org>
Thu, 4 Aug 2016 13:38:17 +0000 (4 16:38 +0300)
treeccfa578631f3779b49952e117b2ca65f414d9304
parent005eb2ae1ff6728de7e6998b7456bd72d4456383
linux-user: Handle brk() attempts with very large sizes

In do_brk(), we were inadvertently truncating the size
of a requested brk() from the guest by putting it into an
'int' variable. This meant that we would incorrectly report
success back to the guest rather than a failed allocation,
typically resulting in the guest then segfaulting. Use
abi_ulong instead.

This fixes a crash in the '31370.cc' test in the gcc libstdc++ test
suite (the test case starts by trying to allocate a very large
size and reduces the size until the allocation succeeds).

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
linux-user/syscall.c