Fix parser checking of storage pool device

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
This commit is contained in:
Daniel P. Berrange 2010-03-03 18:47:12 +00:00
parent e609aae673
commit ce5ced1d00

View File

@ -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"));