mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 15:27:47 +00:00
virt-aa-helper should require <uuid> in XML
When <uuid> is not in the XML, a virUUIDGenerate() ends up being called which is unnecessary and can lead to crashes if /dev/urandom isn't available because virRandomInitialize() is not called within virt-aa-helper. This patch adds verify_xpath_context() and updates caps_mockup() to use it. Bug-Ubuntu: https://launchpad.net/bugs/672943
This commit is contained in:
parent
5288881344
commit
29318e177a
@ -605,6 +605,37 @@ catchXMLError (void *ctx, const char *msg ATTRIBUTE_UNUSED, ...)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
verify_xpath_context(xmlXPathContextPtr ctxt)
|
||||
{
|
||||
int rc = -1;
|
||||
char *tmp = NULL;
|
||||
|
||||
if (!ctxt) {
|
||||
vah_warning("Invalid context");
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* check if have <name> */
|
||||
if (!(tmp = virXPathString("string(./name[1])", ctxt))) {
|
||||
vah_warning("Could not find <name>");
|
||||
goto error;
|
||||
}
|
||||
VIR_FREE(tmp);
|
||||
|
||||
/* check if have <uuid> */
|
||||
if (!(tmp = virXPathString("string(./uuid[1])", ctxt))) {
|
||||
vah_warning("Could not find <uuid>");
|
||||
goto error;
|
||||
}
|
||||
VIR_FREE(tmp);
|
||||
|
||||
rc = 0;
|
||||
|
||||
error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse the xml we received to fill in the following:
|
||||
* ctl->hvm
|
||||
@ -653,6 +684,10 @@ caps_mockup(vahControl * ctl, const char *xmlStr)
|
||||
}
|
||||
ctxt->node = root;
|
||||
|
||||
/* Quick sanity check for some required elements */
|
||||
if (verify_xpath_context(ctxt) != 0)
|
||||
goto cleanup;
|
||||
|
||||
ctl->hvm = virXPathString("string(./os/type[1])", ctxt);
|
||||
if (!ctl->hvm || STRNEQ(ctl->hvm, "hvm")) {
|
||||
vah_error(ctl, 0, "os.type is not 'hvm'");
|
||||
|
Loading…
Reference in New Issue
Block a user