The storage backend implementations all presume that the XML parser
is validating correctness of the source specification. The check for
a source device was lost at some point. This allowed for a potential
crash in the disk backend. Re-introduce the sanity check
* src/conf/storage_conf.c: Re-add check for source device
---
src/conf/storage_conf.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 19a1db9..b0f326f 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -689,6 +689,15 @@ virStoragePoolDefParseXML(xmlXPathContextPtr ctxt) {
}
}
+ /* If DEVICE is the only source type, then its required */
+ if (options->flags == VIR_STORAGE_POOL_SOURCE_DEVICE) {
+ if (!ret->source.ndevice) {
+ virStorageReportError(VIR_ERR_XML_ERROR,
+ "%s", _("missing storage pool source
device name"));
+ goto cleanup;
+ }
+ }
+
if ((ret->target.path = virXPathString("string(./target/path)", ctxt))
== NULL) {
virStorageReportError(VIR_ERR_XML_ERROR,
"%s", _("missing storage pool target
path"));
--
1.6.5.2