]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
ch: Use correct domain definition in chDomainGetXMLDesc()
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 6 Nov 2025 14:01:26 +0000 (15:01 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 10 Nov 2025 12:15:32 +0000 (13:15 +0100)
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 <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
src/ch/ch_driver.c

index ad13306c4cfdae08c4050834f1da5476820e2e5d..8ec90e119278dd3fdcadfe7960ac57d27c7e9300 100644 (file)
@@ -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: