• P
    storage_conf: Fix libvirtd crash when defining scsi storage pool · 119b6dfc
    Pradipta Kr. Banerjee 提交于
    Since 9f781da6
    
    Resolve a libvirtd crash in virStoragePoolSourceFindDuplicate()
    when there is an existing SCSI pool defined with adapter type as
    'scsi_host' and defining a new SCSI pool with adapter type as
    'fc_host' and parent attribute missing or vice versa.
    
    For example, if there is an existing SCSI pool with adapter type
    as 'scsi_host' defined using the following XML
    
    <pool type='scsi'>
      <name>TEST_SCSI_POOL</name>
        <source>
           <adapter type='scsi_host' name='scsi_host1'/>
        </source>
        <target>
            <path>/dev/disk/by-path</path>
        </target>
    </pool>
    
    When defining another SCSI pool with adapter type as 'fc_host' using the
    following XML will crash libvirtd
    
    <pool type='scsi'>
      <name>TEST_SCSI_FC_POOL</name>
      <source>
         <adapter type='fc_host' wwnn='1234567890abcdef' wwpn='abcdef1234567890'/>
      </source>
      <target>
         <path>/dev/disk/by-path</path>
      </target>
    </pool>
    
    Same is true for the reverse case as well where there exists a SCSI pool
    with adapter type as 'fc_host' and another SCSI pool is defined with
    adapter type as 'scsi_host'.
    
    This happens because for fc_host 'name' is optional attribute whereas for
    scsi_host its mandatory. However the check in libvirt for finding duplicate
    storage pools didn't take that into account while comparing
    Signed-off-by: NPradipta Kr. Banerjee <bpradip@in.ibm.com>
    119b6dfc
storage_conf.c 72.2 KB