From: Denis V. Lunev Date: Wed, 22 Jul 2026 16:54:56 +0000 (+0200) Subject: parallels: avoid fatal abort on large bitmap L1 table X-Git-Tag: v11.1.0-rc2~1^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b620302ea86d71cc454d8b09a4235e46d6473ab;p=thirdparty%2Fqemu.git 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 CC: Thomas Huth CC: Stefan Hajnoczi --- 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); }