[PATCH 00/11] Fix qemu_strtosz() read-out-of-bounds

Eric Blake posted 11 patches 11 months, 3 weeks ago
Failed in applying to current master (apply log)
Maintainers: Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Yanan Wang <wangyanan55@huawei.com>
There is a newer version of this series
hw/core/numa.c           |   11 +-
tests/unit/test-cutils.c | 1213 ++++++++++++++++++++++++++++++--------
util/cutils.c            |  180 ++++--
3 files changed, 1090 insertions(+), 314 deletions(-)
[PATCH 00/11] Fix qemu_strtosz() read-out-of-bounds
Posted by Eric Blake 11 months, 3 weeks ago
This series blew up in my face when Hanna first pointed me to
https://gitlab.com/qemu-project/qemu/-/issues/1629

Basically, 'qemu-img dd bs=9.9e999' killed a sanitized build because
of a read-out-of-bounds (".9e999" parses as infinity, but qemu_strtosz
wasn't expecting ERANGE failure).

The overall diffstate is big, mainly because the unit tests needed a
LOT of work before I felt comfortable tweaking semantics in something
that is so essential to command-line and QMP parsing.

Eric Blake (11):
  test-cutils: Avoid g_assert in unit tests
  test-cutils: Use g_assert_cmpuint where appropriate
  test-cutils: Test integral qemu_strto* value on failures
  test-cutils: Add coverage of qemu_strtod
  test-cutils: Prepare for upcoming semantic change in qemu_strtosz
  test-cutils: Add more coverage to qemu_strtosz
  numa: Check for qemu_strtosz_MiB error
  cutils: Set value in all qemu_strtosz* error paths
  cutils: Set value in all integral qemu_strto* error paths
  cutils: Improve qemu_strtod* error paths
  cutils: Improve qemu_strtosz handling of fractions

 hw/core/numa.c           |   11 +-
 tests/unit/test-cutils.c | 1213 ++++++++++++++++++++++++++++++--------
 util/cutils.c            |  180 ++++--
 3 files changed, 1090 insertions(+), 314 deletions(-)


base-commit: 792f77f376adef944f9a03e601f6ad90c2f891b2
-- 
2.40.1
Re: [PATCH 00/11] Fix qemu_strtosz() read-out-of-bounds
Posted by Hanna Czenczek 11 months, 3 weeks ago
On 08.05.23 22:03, Eric Blake wrote:
> This series blew up in my face when Hanna first pointed me to
> https://gitlab.com/qemu-project/qemu/-/issues/1629
>
> Basically, 'qemu-img dd bs=9.9e999' killed a sanitized build because
> of a read-out-of-bounds (".9e999" parses as infinity, but qemu_strtosz
> wasn't expecting ERANGE failure).
>
> The overall diffstate is big, mainly because the unit tests needed a
> LOT of work before I felt comfortable tweaking semantics in something
> that is so essential to command-line and QMP parsing.
>
> Eric Blake (11):
>    test-cutils: Avoid g_assert in unit tests
>    test-cutils: Use g_assert_cmpuint where appropriate
>    test-cutils: Test integral qemu_strto* value on failures
>    test-cutils: Add coverage of qemu_strtod
>    test-cutils: Prepare for upcoming semantic change in qemu_strtosz
>    test-cutils: Add more coverage to qemu_strtosz
>    numa: Check for qemu_strtosz_MiB error
>    cutils: Set value in all qemu_strtosz* error paths
>    cutils: Set value in all integral qemu_strto* error paths
>    cutils: Improve qemu_strtod* error paths
>    cutils: Improve qemu_strtosz handling of fractions
>
>   hw/core/numa.c           |   11 +-
>   tests/unit/test-cutils.c | 1213 ++++++++++++++++++++++++++++++--------
>   util/cutils.c            |  180 ++++--
>   3 files changed, 1090 insertions(+), 314 deletions(-)

Patches 1 – 5, 7 – 10:

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