mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 19:32:19 +00:00
qemuMigrationCookieXMLParse: Check domain element count more defensively
Make sure that 'virXPathNodeSet' returns '1' as the only expected value rather than relying on the fact that the previous check for the number of elements ensures success of the subsequent call. The error message no longer mentions the number of <domain> elements in the cookie, but this is a very unlikely internal error anyways. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
4a7dd2780c
commit
25b944e067
@ -1212,7 +1212,6 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig,
|
|||||||
g_autofree char *hostuuid = NULL;
|
g_autofree char *hostuuid = NULL;
|
||||||
char localdomuuid[VIR_UUID_STRING_BUFLEN];
|
char localdomuuid[VIR_UUID_STRING_BUFLEN];
|
||||||
xmlNodePtr *nodes = NULL;
|
xmlNodePtr *nodes = NULL;
|
||||||
int n;
|
|
||||||
|
|
||||||
/* We don't store the uuid, name, hostname, or hostuuid
|
/* We don't store the uuid, name, hostname, or hostuuid
|
||||||
* values. We just compare them to local data to do some
|
* values. We just compare them to local data to do some
|
||||||
@ -1297,11 +1296,9 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig,
|
|||||||
|
|
||||||
if ((flags & QEMU_MIGRATION_COOKIE_PERSISTENT) &&
|
if ((flags & QEMU_MIGRATION_COOKIE_PERSISTENT) &&
|
||||||
virXPathBoolean("count(./domain) > 0", ctxt)) {
|
virXPathBoolean("count(./domain) > 0", ctxt)) {
|
||||||
if ((n = virXPathNodeSet("./domain", ctxt, &nodes)) > 1) {
|
if ((virXPathNodeSet("./domain", ctxt, &nodes)) != 1) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
_("Too many domain elements in "
|
_("Too many domain elements in migration cookie"));
|
||||||
"migration cookie: %d"),
|
|
||||||
n);
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
mig->persistent = virDomainDefParseNode(doc, nodes[0],
|
mig->persistent = virDomainDefParseNode(doc, nodes[0],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user