block: Fix error path segfault in bdrv_open()
authorKevin Wolf <kwolf@redhat.com>
Thu, 6 Mar 2014 15:34:46 +0000 (16:34 +0100)
committerKevin Wolf <kwolf@redhat.com>
Thu, 6 Mar 2014 16:29:24 +0000 (17:29 +0100)
commiteb909c7f72362e3c891d679f6f4eab0885fdb1c1
treef32b78571caebee7014ea77d5714ca57ab722060
parentc75203c8d343dc71d95144862bbb47290689c455
block: Fix error path segfault in bdrv_open()

Using an invalid option for a block device that is opened with
BDRV_O_PROTOCOL led to drv = NULL, and when trying to include the driver
name in the error message, qemu dereferenced it:

    $ x86_64-softmmu/qemu-system-x86_64 -drive file=/tmp/test.qcow2,file.foo=bar
    Segmentation fault (core dumped)

With this patch applied, the expected error message is printed:

    $ x86_64-softmmu/qemu-system-x86_64 -drive file=/tmp/test.qcow2,file.foo=bar
    qemu-system-x86_64: -drive file=/tmp/test.qcow2,file.foo=bar: could
    not open disk image /tmp/test.qcow2: Block protocol 'file' doesn't
    support the option 'foo'

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Benoit Canet <benoit@irqsave.net>
block.c
tests/qemu-iotests/051
tests/qemu-iotests/051.out