]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
parallels: avoid fatal abort on large bitmap L1 table
authorDenis V. Lunev <den@openvz.org>
Wed, 22 Jul 2026 16:54:56 +0000 (18:54 +0200)
committerDenis V. Lunev <den@openvz.org>
Tue, 28 Jul 2026 14:42:45 +0000 (16:42 +0200)
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>
block/parallels-ext.c

index 704e16e1de54e837fcab9fd9e8aabca10883f25b..7f6ab6b0d26a31dc4e7a124d1be76c940f6f7cc8 100644 (file)
@@ -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);
         }