[libvirt] [PATCH] Fix parser checking of storage pool device

Daniel P. Berrange berrange at redhat.com
Wed Mar 3 18:48:47 UTC 2010


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




More information about the libvir-list mailing list