On 05/02/2018 03:20 PM, Max Reitz wrote:
img_open_opts() takes a QemuOpts and converts them to a QDict, so all
values therein are strings. Then it may try to call qdict_get_bool(),
however, which will fail with a segmentation fault every time:
I have no idea if it's worth fixing qdict_get_bool() to at least not
segfault when called on a non-bool Dict member (but what should it
return, true or false? or should it abort() for at least a cleaner
failure than a segfault?)
But in the meantime, your fix is correct.
$ ./qemu-img info -U --image-opts \
driver=file,filename=/dev/null,force-share=off
[1] 27869 segmentation fault (core dumped) ./qemu-img info -U
--image-opts driver=file,filename=/dev/null,force-share=off
Fix this by using qdict_get_str() and comparing the value as a string.
Also, when adding a force-share value to the QDict, add it as a string
so it fits the rest of the dict.
Cc: [email protected]
Signed-off-by: Max Reitz <[email protected]>
---
qemu-img.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Reviewed-by: Eric Blake <[email protected]>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org