From 776b675861a73b5571edfdbd6c29e0e1b18b569f Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Tue, 17 Nov 2009 12:06:46 +0100 Subject: [PATCH] 504262 Check for duplicated UUID in XM Xen defines * src/xen/xm_internal.c: the XM driver was not checking for previously defined UUID on new defines. Similar to virDomainObjIsDuplicate() behaviour. --- src/xen/xm_internal.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c index f833ce7efe..2ee321f0b3 100644 --- a/src/xen/xm_internal.c +++ b/src/xen/xm_internal.c @@ -2623,6 +2623,26 @@ virDomainPtr xenXMDomainDefineXML(virConnectPtr conn, const char *xml) { return (NULL); } + /* + * check that if there is another domain defined with the same uuid + * it has the same name + */ + if ((entry = virHashSearch(priv->configCache, xenXMDomainSearchForUUID, + (const void *)&(def->uuid))) != NULL) { + if ((entry->def != NULL) && (entry->def->name != NULL) && + (STRNEQ(def->name, entry->def->name))) { + char uuidstr[VIR_UUID_STRING_BUFLEN]; + + virUUIDFormat(entry->def->uuid, uuidstr); + xenXMError(conn, VIR_ERR_OPERATION_FAILED, + _("domain '%s' is already defined with uuid %s"), + entry->def->name, uuidstr); + entry = NULL; + goto error; + } + entry = NULL; + } + if (virHashLookup(priv->nameConfigMap, def->name)) { /* domain exists, we will overwrite it */