From: tu bo <tubo@linux.vnet.ibm.com>
To: Max Reitz <mreitz@redhat.com>,
Xiao Guang Chen <chenxg@linux.vnet.ibm.com>,
qemu-devel@nongnu.org
Cc: kwolf@redhat.com, armbru@redhat.com, mimu@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH RFC v7 5/7] qemu-iotests: s390x: fix test 049
Date: Mon, 27 Apr 2015 10:52:06 +0800 [thread overview]
Message-ID: <553DA456.9060504@linux.vnet.ibm.com> (raw)
In-Reply-To: <55392236.5020803@redhat.com>
Hello Max:
Xiao Guang Chen left IBM last week, and I took over this job. thanks for
your comments :-)
On 04/24/2015 12:47 AM, Max Reitz wrote:
> On 23.04.2015 04:42, Xiao Guang Chen wrote:
>> From: Bo Tu <tubo@linux.vnet.ibm.com>
>
> Hm, why is Bo Tu the patch author, but doesn't have an S-o-b in the
> commit message?
I created the patch, but faild to send out it via 'git send-email". So
XiaoGuang sent the patch with his account on his machine. Perhaps that's
the reason.
>> when creating an image qemu-img enable us specifying the size of the
>> image using -o size=xx options. But when we specify an invalid size
>> such as a negtive size then different platform gives different result.
>>
>> parse_option_size() function in util/qemu-option.c will be called to
>> parse the size, a cast was called in the function to cast the input
>> (saved as a double in the function) size to an unsigned int64 value,
>> when the input is a negtive value or exceeds the maximum of uint64, then
>> the result is undefined.
>>
>> Language spec 6.3.1.4 Real floating and integers:
>> the result of this assignment/cast is undefined if the float is not
>> in the open interval (-1, U<type>_MAX+1).
>
> Thank you for pointing to the specific section. I guess there are
> always new things to discover in C...
>
>> Signed-off-by: Xiao Guang Chen <chenxg@linux.vnet.ibm.com>
>> ---
>> tests/qemu-iotests/049.out | 10 ++++------
>> util/qemu-option.c | 5 +++++
>> 2 files changed, 9 insertions(+), 6 deletions(-)
>>
>> diff --git a/tests/qemu-iotests/049.out b/tests/qemu-iotests/049.out
>> index 9f93666..75d90b2 100644
>> --- a/tests/qemu-iotests/049.out
>> +++ b/tests/qemu-iotests/049.out
>> @@ -95,17 +95,15 @@ qemu-img create -f qcow2 TEST_DIR/t.qcow2 -- -1024
>> qemu-img: Image size must be less than 8 EiB!
>> qemu-img create -f qcow2 -o size=-1024 TEST_DIR/t.qcow2
>> -qemu-img: qcow2 doesn't support shrinking images yet
>> -qemu-img: TEST_DIR/t.qcow2: Could not resize image: Operation not
>> supported
>> -Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=-1024 encryption=off
>> cluster_size=65536 lazy_refcounts=off refcount_bits=16
>> +qemu-img: Parameter 'size' expects a positive number and must not
>> exceeds the maximum UINT64
>> +qemu-img: TEST_DIR/t.qcow2: Invalid options for file format 'qcow2'
>> qemu-img create -f qcow2 TEST_DIR/t.qcow2 -- -1k
>> qemu-img: Image size must be less than 8 EiB!
>> qemu-img create -f qcow2 -o size=-1k TEST_DIR/t.qcow2
>> -qemu-img: qcow2 doesn't support shrinking images yet
>> -qemu-img: TEST_DIR/t.qcow2: Could not resize image: Operation not
>> supported
>> -Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=-1024 encryption=off
>> cluster_size=65536 lazy_refcounts=off refcount_bits=16
>> +qemu-img: Parameter 'size' expects a positive number and must not
>> exceeds the maximum UINT64
>> +qemu-img: TEST_DIR/t.qcow2: Invalid options for file format 'qcow2'
>> qemu-img create -f qcow2 TEST_DIR/t.qcow2 -- 1kilobyte
>> qemu-img: Invalid image size specified! You may use k, M, G, T, P
>> or E suffixes for
>> diff --git a/util/qemu-option.c b/util/qemu-option.c
>> index fda4e5f..1c50fa4 100644
>> --- a/util/qemu-option.c
>> +++ b/util/qemu-option.c
>> @@ -179,6 +179,11 @@ void parse_option_size(const char *name, const
>> char *value,
>> if (value != NULL) {
>> sizef = strtod(value, &postfix);
>> + if (sizef < 0 || sizef > UINT64_MAX) {
>> + error_set(errp, QERR_INVALID_PARAMETER_VALUE, name, "a
>> positive "
>> + "number and must not exceeds the maximum
>> UINT64");
>
> I think Markus would like to see these error macros not getting used
> anymore, so I think it should be dropped and the full string should be
> given here. I'll let him do the arguing, though. :-)
>
> If you keep the macro, I'd propose "a non-negative number below 2^64"
> (or actually give the decimal value of UINT64_MAX, using 'a
> non-negative number not exceeding "%" PRIu64, UINT64_MAX'). Remember
> that 0 is not positive, but still a valid choice.
Good suggestion. I'll change the error message like "a non-negative
number not exceeding "%" PRIu64, UINT64_MAX')" in v8.
> If you drop the macro, I'd propose error_setg(errp, "'%s' must be a
> non-negative number below 2^64", name) or, like it is now,
> error_setg(errp, "Parameter '%s' expects a non-negative number below
> 2^64", name).
>
> Max
>
>> + return;
>> + }
>> switch (*postfix) {
>> case 'T':
>> sizef *= 1024;
>
>
next prev parent reply other threads:[~2015-04-27 2:52 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-23 2:42 [Qemu-devel] [PATCH RFC v7 0/7] Update tests/qemu-iotests failing cases for the s390 platform Xiao Guang Chen
2015-04-23 2:42 ` [Qemu-devel] [PATCH RFC v7 1/7] qemu-iotests: qemu machine type support Xiao Guang Chen
2015-04-23 2:42 ` [Qemu-devel] [PATCH RFC v7 2/7] qemu-iotests: run qemu with -nodefaults and fix 067, 071, 081 and 087 Xiao Guang Chen
2015-04-23 2:42 ` [Qemu-devel] [PATCH RFC v7 3/7] qemu-iotests: s390x: fix test 041 Xiao Guang Chen
2015-04-23 2:42 ` [Qemu-devel] [PATCH RFC v7 4/7] qemu-iotests: s390x: fix test 055 Xiao Guang Chen
2015-04-23 2:42 ` [Qemu-devel] [PATCH RFC v7 5/7] qemu-iotests: s390x: fix test 049 Xiao Guang Chen
2015-04-23 16:47 ` Max Reitz
2015-04-27 2:52 ` tu bo [this message]
2015-04-23 2:42 ` [Qemu-devel] [PATCH RFC v7 6/7] qemu-iotests: s390x: fix test 051 Xiao Guang Chen
2015-04-23 17:00 ` Max Reitz
2015-04-27 3:57 ` tu bo
2015-04-27 11:18 ` Max Reitz
2015-04-23 2:42 ` [Qemu-devel] [PATCH RFC v7 7/7] qemu-iotests-s390x-fix-test-130 Xiao Guang Chen
2015-04-23 17:07 ` Max Reitz
2015-04-27 7:15 ` tu bo
2015-04-27 11:24 ` Max Reitz
2015-04-27 11:34 ` Kevin Wolf
2015-04-28 2:59 ` tu bo
2015-04-28 8:23 ` Kevin Wolf
2015-05-04 6:30 ` tu bo
-- strict thread matches above, loose matches on Subject: below --
2015-04-23 2:05 [Qemu-devel] [PATCH RFC v7 0/7] Update tests/qemu-iotests failing cases for the s390 platform Bo Tu
2015-04-23 2:05 ` [Qemu-devel] [PATCH RFC v7 5/7] qemu-iotests: s390x: fix test 049 Bo Tu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=553DA456.9060504@linux.vnet.ibm.com \
--to=tubo@linux.vnet.ibm.com \
--cc=armbru@redhat.com \
--cc=chenxg@linux.vnet.ibm.com \
--cc=kwolf@redhat.com \
--cc=mimu@linux.vnet.ibm.com \
--cc=mreitz@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.