From: Michal Privoznik <[email protected]>

The chDomainGetXMLDesc() function claims to support
VIR_DOMAIN_XML_INACTIVE to obtain the persistent definition of a
running domain (in its call to virCheckFlags()) but in fact, it's
always passing vm->def to virDomainDefFormat().

So far, there's no harm done because CH driver never sets domain
def as transient. But that'll change.

Signed-off-by: Michal Privoznik <[email protected]>
---
 src/ch/ch_driver.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c
index ad13306c4c..8ec90e1192 100644
--- a/src/ch/ch_driver.c
+++ b/src/ch/ch_driver.c
@@ -1277,6 +1277,7 @@ static char *chDomainGetXMLDesc(virDomainPtr dom,
 {
     virCHDriver *driver = dom->conn->privateData;
     virDomainObj *vm;
+    virDomainDef *def;
     char *ret = NULL;
 
     virCheckFlags(VIR_DOMAIN_XML_COMMON_FLAGS, NULL);
@@ -1287,7 +1288,13 @@ static char *chDomainGetXMLDesc(virDomainPtr dom,
     if (virDomainGetXMLDescEnsureACL(dom->conn, vm->def, flags) < 0)
         goto cleanup;
 
-    ret = virDomainDefFormat(vm->def, driver->xmlopt,
+    if ((flags & VIR_DOMAIN_XML_INACTIVE) && vm->newDef) {
+        def = vm->newDef;
+    } else {
+        def = vm->def;
+    }
+
+    ret = virDomainDefFormat(def, driver->xmlopt,
                              virDomainDefFormatConvertXMLFlags(flags));
 
  cleanup:
-- 
2.51.0

Reply via email to