mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 02:24:58 -06:00
cutils: Allow NULL str in qemu_strtosz
All the other qemu_strto* and parse_uint allow a NULL str. Having qemu_strtosz not crash on qemu_strtosz(NULL, NULL, &value) is an easy fix that adds some consistency between our string parsers. Signed-off-by: Eric Blake <eblake@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Hanna Czenczek <hreitz@redhat.com> Message-Id: <20230522190441.64278-13-eblake@redhat.com>
This commit is contained in:
parent
157367cf21
commit
f49371ecae
2 changed files with 10 additions and 2 deletions
|
@ -3285,7 +3285,12 @@ static void do_strtosz_full(const char *str, qemu_strtosz_fn fn,
|
||||||
ret = fn(str, &endptr, &val);
|
ret = fn(str, &endptr, &val);
|
||||||
g_assert_cmpint(ret, ==, exp_ptr_ret);
|
g_assert_cmpint(ret, ==, exp_ptr_ret);
|
||||||
g_assert_cmpuint(val, ==, exp_ptr_val);
|
g_assert_cmpuint(val, ==, exp_ptr_val);
|
||||||
g_assert_true(endptr == str + exp_ptr_offset);
|
if (str) {
|
||||||
|
g_assert_true(endptr == str + exp_ptr_offset);
|
||||||
|
} else {
|
||||||
|
g_assert_cmpint(exp_ptr_offset, ==, 0);
|
||||||
|
g_assert_null(endptr);
|
||||||
|
}
|
||||||
|
|
||||||
val = 0xbaadf00d;
|
val = 0xbaadf00d;
|
||||||
ret = fn(str, NULL, &val);
|
ret = fn(str, NULL, &val);
|
||||||
|
@ -3383,6 +3388,9 @@ static void test_qemu_strtosz_float(void)
|
||||||
|
|
||||||
static void test_qemu_strtosz_invalid(void)
|
static void test_qemu_strtosz_invalid(void)
|
||||||
{
|
{
|
||||||
|
do_strtosz(NULL, -EINVAL, 0xbaadf00d, 0);
|
||||||
|
|
||||||
|
/* Must parse at least one digit */
|
||||||
do_strtosz("", -EINVAL, 0xbaadf00d, 0);
|
do_strtosz("", -EINVAL, 0xbaadf00d, 0);
|
||||||
do_strtosz(" \t ", -EINVAL, 0xbaadf00d, 0);
|
do_strtosz(" \t ", -EINVAL, 0xbaadf00d, 0);
|
||||||
do_strtosz("crap", -EINVAL, 0xbaadf00d, 0);
|
do_strtosz("crap", -EINVAL, 0xbaadf00d, 0);
|
||||||
|
|
|
@ -306,7 +306,7 @@ static int do_strtosz(const char *nptr, const char **end,
|
||||||
out:
|
out:
|
||||||
if (end) {
|
if (end) {
|
||||||
*end = endptr;
|
*end = endptr;
|
||||||
} else if (*endptr) {
|
} else if (nptr && *endptr) {
|
||||||
retval = -EINVAL;
|
retval = -EINVAL;
|
||||||
}
|
}
|
||||||
if (retval == 0) {
|
if (retval == 0) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue