Commit 4b620302ea for qemu.org
commit 4b620302ea86d71cc454d8b09a4235e46d6473ab
Author: Denis V. Lunev <den@openvz.org>
Date: Wed Jul 22 18:54:56 2026 +0200
parallels: avoid fatal abort on large bitmap L1 table
parallels_load_bitmap() allocated the L1 table with g_new(), which
aborts the whole process on allocation failure instead of returning
an error.
Use g_try_new() and fail the open normally.
Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Thomas Huth <thuth@redhat.com>
CC: Stefan Hajnoczi <stefanha@redhat.com>
diff --git a/block/parallels-ext.c b/block/parallels-ext.c
index 704e16e1de..7f6ab6b0d2 100644
--- a/block/parallels-ext.c
+++ b/block/parallels-ext.c
@@ -169,7 +169,13 @@ parallels_load_bitmap(BlockDriverState *bs, uint8_t *data, size_t data_size,
}
if (bf.l1_size != 0) {
- l1_table = g_new(uint64_t, bf.l1_size);
+ l1_table = g_try_new(uint64_t, bf.l1_size);
+ if (!l1_table) {
+ error_setg(errp, "Failed to allocate the bitmap L1 table "
+ "(%" PRIu32 " entries)", bf.l1_size);
+ goto fail;
+ }
+
for (i = 0; i < bf.l1_size; i++, data += sizeof(uint64_t)) {
l1_table[i] = ldq_le_p(data);
}