aboutsummaryrefslogtreecommitdiff
path: root/semihosting/Kconfig
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2023-05-22 14:04:27 -0500
committerEric Blake <eblake@redhat.com>2023-06-02 12:23:33 -0500
commit56ddafde3f68b27123281dde3f48b5e945c86b48 (patch)
tree4a93c5cc0a51d72b3e0bff236695902cf1c0ee52 /semihosting/Kconfig
parent3069522bb9db4586262cbbbf447c5c5211d5921d (diff)
cutils: Fix wraparound parsing in qemu_strtoui
While we were matching 32-bit strtol in qemu_strtoi, our use of a 64-bit parse was leaking through for some inaccurate answers in qemu_strtoui in comparison to a 32-bit strtoul (see the unit test for examples). The comment for that function even described what we have to do for a correct parse, but didn't implement it correctly: since strtoull checks for overflow against the wrong values and then negates, we have to temporarily undo negation before checking for overflow against our desired value. Our int wrappers would be a lot easier to write if libc had a guaranteed 32-bit parser even on platforms with 64-bit long. Whether we parse C2x binary strings like "0b1000" is currently up to what libc does; our unit tests intentionally don't cover that at the moment, though. Fixes: 473a2a331e ("cutils: add qemu_strtoi & qemu_strtoui parsers for int/unsigned int types", v2.12.0) Signed-off-by: Eric Blake <eblake@redhat.com> CC: qemu-stable@nongnu.org Message-Id: <20230522190441.64278-6-eblake@redhat.com> Reviewed-by: Hanna Czenczek <hreitz@redhat.com>
Diffstat (limited to 'semihosting/Kconfig')
0 files changed, 0 insertions, 0 deletions