render / rpms / libvirt

Forked from rpms/libvirt 9 months ago
Clone
9119d9
From 64d3b1546dc6c96afd2d06403f0c93308e0b34b6 Mon Sep 17 00:00:00 2001
9119d9
Message-Id: <64d3b1546dc6c96afd2d06403f0c93308e0b34b6@dist-git>
9119d9
From: Peter Krempa <pkrempa@redhat.com>
9119d9
Date: Tue, 23 Dec 2014 15:54:35 -0700
9119d9
Subject: [PATCH] qemu: migration: Unlock vm on failed ACL check in protocol v2
9119d9
 APIs
9119d9
9119d9
CVE-2014-8136 (RHEL 7.0.z, 7.1)
9119d9
9119d9
Avoid leaving the domain locked on a failed ACL check in
9119d9
qemuDomainMigratePerform() and qemuDomainMigrateFinish2().
9119d9
9119d9
Introduced in commit abf75aea247e (Add ACL checks into the QEMU driver).
9119d9
9119d9
(cherry picked from commit 2bdcd29c713dfedd813c89f56ae98f6f3898313d)
9119d9
9119d9
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9119d9
---
9119d9
 src/qemu/qemu_driver.c | 8 ++++++--
9119d9
 1 file changed, 6 insertions(+), 2 deletions(-)
9119d9
9119d9
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
9119d9
index 619f2d6..1b08cc4 100644
9119d9
--- a/src/qemu/qemu_driver.c
9119d9
+++ b/src/qemu/qemu_driver.c
9119d9
@@ -11343,8 +11343,10 @@ qemuDomainMigratePerform(virDomainPtr dom,
9119d9
     if (!(vm = qemuDomObjFromDomain(dom)))
9119d9
         goto cleanup;
9119d9
 
9119d9
-    if (virDomainMigratePerformEnsureACL(dom->conn, vm->def) < 0)
9119d9
+    if (virDomainMigratePerformEnsureACL(dom->conn, vm->def) < 0) {
9119d9
+        virObjectUnlock(vm);
9119d9
         goto cleanup;
9119d9
+    }
9119d9
 
9119d9
     if (flags & VIR_MIGRATE_PEER2PEER) {
9119d9
         dconnuri = uri;
9119d9
@@ -11391,8 +11393,10 @@ qemuDomainMigrateFinish2(virConnectPtr dconn,
9119d9
         goto cleanup;
9119d9
     }
9119d9
 
9119d9
-    if (virDomainMigrateFinish2EnsureACL(dconn, vm->def) < 0)
9119d9
+    if (virDomainMigrateFinish2EnsureACL(dconn, vm->def) < 0) {
9119d9
+        virObjectUnlock(vm);
9119d9
         goto cleanup;
9119d9
+    }
9119d9
 
9119d9
     /* Do not use cookies in v2 protocol, since the cookie
9119d9
      * length was not sufficiently large, causing failures
9119d9
-- 
9119d9
2.2.1
9119d9