qemu-stable
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 05/19] cutils: Fix wraparound parsing in qemu_strtoui


From: Hanna Czenczek
Subject: Re: [PATCH v3 05/19] cutils: Fix wraparound parsing in qemu_strtoui
Date: Tue, 23 May 2023 19:36:31 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0

On 22.05.23 21:04, Eric Blake wrote:
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
---

v3: rewrite with better comments in code and commit message [Hanna];
fix additional problems with wraparound, cc qemu-stable although this
has been long-standing enough to be low priority, R-b dropped
---
  tests/unit/test-cutils.c | 20 +++++++++-----------
  util/cutils.c            | 25 +++++++++++++++++++------
  2 files changed, 28 insertions(+), 17 deletions(-)

Reviewed-by: Hanna Czenczek <hreitz@redhat.com>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]