Commit de7269d2 authored by Alberto Garcia's avatar Alberto Garcia Committed by Kevin Wolf
Browse files

qcow2: Use g_try_realloc() in qcow2_expand_zero_clusters()



g_realloc() aborts the program if it fails to allocate the required
amount of memory. We want to detect that scenario and return an error
instead, so let's use g_try_realloc().

Signed-off-by: default avatarAlberto Garcia <berto@igalia.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent c1a4b6f9
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -2070,7 +2070,15 @@ int qcow2_expand_zero_clusters(BlockDriverState *bs,
        int l1_sectors = DIV_ROUND_UP(s->snapshots[i].l1_size *
                                      sizeof(uint64_t), BDRV_SECTOR_SIZE);

        l1_table = g_realloc(l1_table, l1_sectors * BDRV_SECTOR_SIZE);
        uint64_t *new_l1_table =
            g_try_realloc(l1_table, l1_sectors * BDRV_SECTOR_SIZE);

        if (!new_l1_table) {
            ret = -ENOMEM;
            goto fail;
        }

        l1_table = new_l1_table;

        ret = bdrv_read(bs->file,
                        s->snapshots[i].l1_table_offset / BDRV_SECTOR_SIZE,