Commit d220894e authored by Kevin Wolf's avatar Kevin Wolf
Browse files

bdrv_img_create: Fix segfault



Block drivers that don't support creating images don't have a size option. Fail
gracefully instead of segfaulting when trying to access the option's value.

Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent 80fa3341
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -2881,7 +2881,7 @@ int bdrv_img_create(const char *filename, const char *fmt,
                    char *options, uint64_t img_size, int flags)
{
    QEMUOptionParameter *param = NULL, *create_options = NULL;
    QEMUOptionParameter *backing_fmt, *backing_file;
    QEMUOptionParameter *backing_fmt, *backing_file, *size;
    BlockDriverState *bs = NULL;
    BlockDriver *drv, *proto_drv;
    BlockDriver *backing_drv = NULL;
@@ -2964,7 +2964,8 @@ int bdrv_img_create(const char *filename, const char *fmt,

    // The size for the image must always be specified, with one exception:
    // If we are using a backing file, we can obtain the size from there
    if (get_option_parameter(param, BLOCK_OPT_SIZE)->value.n == -1) {
    size = get_option_parameter(param, BLOCK_OPT_SIZE);
    if (size && size->value.n == -1) {
        if (backing_file && backing_file->value.s) {
            uint64_t size;
            char buf[32];