Blame packages/q/qemu/dmg-warn-when-opening-dmg-images-contain.patch

Bernhard M. Wiedemann 399b1f
From: Kevin Wolf <kwolf@redhat.com>
Bernhard M. Wiedemann 399b1f
Date: Thu, 29 Sep 2022 11:30:34 +0200
Bernhard M. Wiedemann 399b1f
Subject: dmg: warn when opening dmg images containing blocks of unknown type
Bernhard M. Wiedemann 399b1f
Bernhard M. Wiedemann 399b1f
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Bernhard M. Wiedemann 399b1f
Signed-off-by: Claudio Fontana <cfontana@suse.de>
Bernhard M. Wiedemann 399b1f
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Bernhard M. Wiedemann 399b1f
Message-Id: <20220929093035.4231-5-cfontana@suse.de>
Bernhard M. Wiedemann 399b1f
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Bernhard M. Wiedemann 399b1f
(cherry picked from commit 971974f0a9745a5163e1c825d38da03118054ae2)
Bernhard M. Wiedemann 399b1f
Resolves: bsc#1208139
Bernhard M. Wiedemann 399b1f
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
Bernhard M. Wiedemann 399b1f
---
Bernhard M. Wiedemann 399b1f
 block/dmg.c | 19 +++++++++++++++++++
Bernhard M. Wiedemann 399b1f
 1 file changed, 19 insertions(+)
Bernhard M. Wiedemann 399b1f
Bernhard M. Wiedemann 399b1f
diff --git a/block/dmg.c b/block/dmg.c
Bernhard M. Wiedemann 399b1f
index 837f18aa20ff7ebb35f961a9626c..96f8c2d14f004d0901d72d00b551 100644
Bernhard M. Wiedemann 399b1f
--- a/block/dmg.c
Bernhard M. Wiedemann 399b1f
+++ b/block/dmg.c
Bernhard M. Wiedemann 399b1f
@@ -254,6 +254,25 @@ static int dmg_read_mish_block(BDRVDMGState *s, DmgHeaderState *ds,
Bernhard M. Wiedemann 399b1f
     for (i = s->n_chunks; i < s->n_chunks + chunk_count; i++) {
Bernhard M. Wiedemann 399b1f
         s->types[i] = buff_read_uint32(buffer, offset);
Bernhard M. Wiedemann 399b1f
         if (!dmg_is_known_block_type(s->types[i])) {
Bernhard M. Wiedemann 399b1f
+            switch (s->types[i]) {
Bernhard M. Wiedemann 399b1f
+            case UDBZ:
Bernhard M. Wiedemann 399b1f
+                warn_report_once("dmg-bzip2 module is missing, accessing bzip2 "
Bernhard M. Wiedemann 399b1f
+                                 "compressed blocks will result in I/O errors");
Bernhard M. Wiedemann 399b1f
+                break;
Bernhard M. Wiedemann 399b1f
+            case ULFO:
Bernhard M. Wiedemann 399b1f
+                warn_report_once("dmg-lzfse module is missing, accessing lzfse "
Bernhard M. Wiedemann 399b1f
+                                 "compressed blocks will result in I/O errors");
Bernhard M. Wiedemann 399b1f
+                break;
Bernhard M. Wiedemann 399b1f
+            case UDCM:
Bernhard M. Wiedemann 399b1f
+            case UDLE:
Bernhard M. Wiedemann 399b1f
+                /* Comments and last entry can be ignored without problems */
Bernhard M. Wiedemann 399b1f
+                break;
Bernhard M. Wiedemann 399b1f
+            default:
Bernhard M. Wiedemann 399b1f
+                warn_report_once("Image contains chunks of unknown type %x, "
Bernhard M. Wiedemann 399b1f
+                                 "accessing them will result in I/O errors",
Bernhard M. Wiedemann 399b1f
+                                 s->types[i]);
Bernhard M. Wiedemann 399b1f
+                break;
Bernhard M. Wiedemann 399b1f
+            }
Bernhard M. Wiedemann 399b1f
             chunk_count--;
Bernhard M. Wiedemann 399b1f
             i--;
Bernhard M. Wiedemann 399b1f
             offset += 40;