]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Fix segmentation fault when attaching a non iSCSI host device
authorMarc Hartmayer <mhartmay@linux.vnet.ibm.com>
Wed, 17 Jan 2018 12:26:08 +0000 (13:26 +0100)
committerJohn Ferlan <jferlan@redhat.com>
Wed, 17 Jan 2018 14:57:53 +0000 (09:57 -0500)
Add a check if it's a iSCSI hostdev and if it's not then don't use the
union member 'iscsi'. The segmentation fault occured when accessing
secinfo->type, but this can vary from case to case.

Signed-off-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.vnet.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com>
src/qemu/qemu_hotplug.c

index 6dc16a1054aff68d8a9c61b28b435f0ed44d500e..6b245bd6ac6b51727c4e617562aed5ad9a1b46e4 100644 (file)
@@ -2343,8 +2343,6 @@ qemuDomainAttachHostSCSIDevice(virConnectPtr conn,
     bool secobjAdded = false;
     virJSONValuePtr secobjProps = NULL;
     virDomainHostdevSubsysSCSIPtr scsisrc = &hostdev->source.subsys.u.scsi;
-    virDomainHostdevSubsysSCSIiSCSIPtr iscsisrc = &scsisrc->u.iscsi;
-    qemuDomainStorageSourcePrivatePtr srcPriv;
     qemuDomainSecretInfoPtr secinfo = NULL;
 
     if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE_SCSI_GENERIC)) {
@@ -2386,9 +2384,12 @@ qemuDomainAttachHostSCSIDevice(virConnectPtr conn,
     if (qemuDomainSecretHostdevPrepare(conn, priv, hostdev) < 0)
         goto cleanup;
 
-    srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(iscsisrc->src);
-    if (srcPriv)
+    if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI) {
+        qemuDomainStorageSourcePrivatePtr srcPriv =
+            QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(scsisrc->u.iscsi.src);
         secinfo = srcPriv->secinfo;
+    }
+
     if (secinfo && secinfo->type == VIR_DOMAIN_SECRET_INFO_TYPE_AES) {
         if (qemuBuildSecretInfoProps(secinfo, &secobjProps) < 0)
             goto cleanup;