render / rpms / libvirt

Forked from rpms/libvirt 9 months ago
Clone
e6dfe8
From b5eaca77959775ffce33c459a06f0dcacee5338d Mon Sep 17 00:00:00 2001
e6dfe8
Message-Id: <b5eaca77959775ffce33c459a06f0dcacee5338d@dist-git>
e6dfe8
From: John Ferlan <jferlan@redhat.com>
e6dfe8
Date: Thu, 1 Mar 2018 07:08:32 -0500
e6dfe8
Subject: [PATCH] conf: Fix crash in virDomainDefCompatibleDevice
e6dfe8
MIME-Version: 1.0
e6dfe8
Content-Type: text/plain; charset=UTF-8
e6dfe8
Content-Transfer-Encoding: 8bit
e6dfe8
e6dfe8
Commit id 'edae027c' blindly assumed that the passed @oldDev
e6dfe8
parameter would not be NULL when calling virDomainDeviceGetInfo;
e6dfe8
however, commit id 'b6a264e8' passed NULL for AttachDevice
e6dfe8
callers under the premise that there wouldn't be a device
e6dfe8
to check/update against.
e6dfe8
e6dfe8
Signed-off-by: John Ferlan <jferlan@redhat.com>
e6dfe8
(cherry picked from commit 5535856f0e31aa6abf4cda11b5c53c0f164680f0)
e6dfe8
e6dfe8
https://bugzilla.redhat.com/show_bug.cgi?id=1557922
e6dfe8
e6dfe8
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
e6dfe8
Reviewed-by: Ján Tomko <jtomko@redhat.com>
e6dfe8
---
e6dfe8
 src/conf/domain_conf.c | 5 ++++-
e6dfe8
 1 file changed, 4 insertions(+), 1 deletion(-)
e6dfe8
e6dfe8
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
e6dfe8
index f21c776ccd..7f4da169d6 100644
e6dfe8
--- a/src/conf/domain_conf.c
e6dfe8
+++ b/src/conf/domain_conf.c
e6dfe8
@@ -27202,9 +27202,12 @@ virDomainDefCompatibleDevice(virDomainDefPtr def,
e6dfe8
 {
e6dfe8
     virDomainCompatibleDeviceData data = {
e6dfe8
         .newInfo = virDomainDeviceGetInfo(dev),
e6dfe8
-        .oldInfo = virDomainDeviceGetInfo(oldDev),
e6dfe8
+        .oldInfo = NULL,
e6dfe8
     };
e6dfe8
 
e6dfe8
+    if (oldDev)
e6dfe8
+        data.oldInfo = virDomainDeviceGetInfo(oldDev);
e6dfe8
+
e6dfe8
     if (!virDomainDefHasUSB(def) &&
e6dfe8
         def->os.type != VIR_DOMAIN_OSTYPE_EXE &&
e6dfe8
         virDomainDeviceIsUSB(dev)) {
e6dfe8
-- 
e6dfe8
2.17.0
e6dfe8