From: Peter Krempa Date: Thu, 8 Mar 2018 16:23:46 +0000 (+0100) Subject: conf: Validate disk source configuration also for the backing store X-Git-Tag: v4.2.0-rc1~174 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=28e1068c4fc47f18b3dc619f786d71fec85a301d;p=thirdparty%2Flibvirt.git 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 --- 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; + for (next = def->src; next; next = next->backingStore) { + if (virDomainDiskSourceDefParseAuthValidate(next) < 0) + return -1; - if (def->src->encryption) { - virStorageEncryptionPtr encryption = def->src->encryption; + if (next->encryption) { + virStorageEncryptionPtr encryption = next->encryption; - if (encryption->format == VIR_STORAGE_ENCRYPTION_FORMAT_LUKS && - encryption->encinfo.cipher_name) { + 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; + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("supplying for domain disk definition " + "is unnecessary")); + return -1; + } } }