|
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;
|