From 5646450daad830bdcae12377cd75baa48f64b62d Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Fri, 7 Jan 2011 21:25:24 +0200 Subject: [PATCH] kvm: Fail if user specifies a QCOW disk image Signed-off-by: Pekka Enberg --- disk-image.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/disk-image.c b/disk-image.c index 9b301c6..a6d1e96 100644 --- a/disk-image.c +++ b/disk-image.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -14,6 +15,19 @@ #define SECTOR_SHIFT 9 #define SECTOR_SIZE (1UL << SECTOR_SHIFT) +static const char QCOW_MAGIC[] = { 'Q', 'F', 'I', 0xfb }; + +struct qcow_header { + uint8_t magic[5]; +}; + +static bool disk_image__is_qcow(struct disk_image *self) +{ + struct qcow_header *header = self->mmap; + + return !memcmp(header->magic, QCOW_MAGIC, ARRAY_SIZE(QCOW_MAGIC)); +} + struct disk_image *disk_image__open(const char *filename) { struct disk_image *self; @@ -36,6 +50,9 @@ struct disk_image *disk_image__open(const char *filename) if (self->mmap == MAP_FAILED) goto failed_close_fd; + if (disk_image__is_qcow(self)) + die("QCOW disk image format is not supported."); + return self; failed_close_fd: