From 28e1068c4fc47f18b3dc619f786d71fec85a301d Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 8 Mar 2018 17:23:46 +0100 Subject: [PATCH] conf: Validate disk source configuration also for the backing store Since we already parse the of a disk source, we should also validate the configuration for the whole backing chain and not only for the top level image. Signed-off-by: Peter Krempa --- src/conf/domain_conf.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 1c79d2b49b..8cd41edb5e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -8974,6 +8974,8 @@ virDomainDiskSourceDefParseAuthValidate(const virStorageSource *src) static int virDomainDiskDefParseValidate(const virDomainDiskDef *def) { + virStorageSourcePtr next; + if (def->bus != VIR_DOMAIN_DISK_BUS_VIRTIO) { if (def->event_idx != VIR_TRISTATE_SWITCH_ABSENT) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", @@ -9044,19 +9046,21 @@ virDomainDiskDefParseValidate(const virDomainDiskDef *def) } } - if (virDomainDiskSourceDefParseAuthValidate(def->src) < 0) - return -1; - - if (def->src->encryption) { - virStorageEncryptionPtr encryption = def->src->encryption; - - if (encryption->format == VIR_STORAGE_ENCRYPTION_FORMAT_LUKS && - encryption->encinfo.cipher_name) { - - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("supplying for domain disk definition " - "is unnecessary")); + for (next = def->src; next; next = next->backingStore) { + if (virDomainDiskSourceDefParseAuthValidate(next) < 0) return -1; + + if (next->encryption) { + virStorageEncryptionPtr encryption = next->encryption; + + if (encryption->format == VIR_STORAGE_ENCRYPTION_FORMAT_LUKS && + encryption->encinfo.cipher_name) { + + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("supplying for domain disk definition " + "is unnecessary")); + return -1; + } } }