qemu-iotests: s390x: fix test 049, reject negative sizes in QemuOpts
commit212789925efffe1c552b114321ee74081a7efb03
authorBo Tu <tubo@linux.vnet.ibm.com>
Fri, 3 Jul 2015 07:28:49 +0000 (3 15:28 +0800)
committerKevin Wolf <kwolf@redhat.com>
Fri, 4 Sep 2015 18:59:48 +0000 (4 20:59 +0200)
treee1bcc2f2968a6c769db21c6dee0f374e9936dd30
parentd8683155fa76cabff112271771e43e21034ff2ba
qemu-iotests: s390x: fix test 049, reject negative sizes in QemuOpts

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.

According to C99 6.3.1.4, the result of converting a floating point
number to an integer that cannot represent the (integer part of) number
is undefined.  And sure enough the results are different on x86 and
s390.

C99 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).

Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Sascha Silbe <silbe@linux.vnet.ibm.com>
Signed-off-by: Bo Tu <tubo@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
tests/qemu-iotests/049.out
util/qemu-option.c