[libvirt] [PATCH 2/3] vmx: The virVMXParseDisk deviceType can be NULL, add some missing checks
Michal Privoznik
mprivozn at redhat.com
Wed Sep 2 11:00:37 UTC 2015
On 01.09.2015 16:52, Matthias Bolte wrote:
> ---
> src/vmx/vmx.c | 22 +++++++++++-----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
> index ba4d046..9d1574f 100644
> --- a/src/vmx/vmx.c
> +++ b/src/vmx/vmx.c
> @@ -2178,8 +2178,9 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virConfPtr con
> (*def)->transient = STRCASEEQ(mode,
> "independent-nonpersistent");
> } else if (virFileHasSuffix(fileName, ".iso") ||
> - STRCASEEQ(deviceType, "atapi-cdrom") ||
> - STRCASEEQ(deviceType, "cdrom-raw")) {
> + (deviceType &&
> + (STRCASEEQ(deviceType, "atapi-cdrom") ||
> + STRCASEEQ(deviceType, "cdrom-raw")))) {
> /*
> * This function was called in order to parse a harddisk device,
> * but .iso files, 'atapi-cdrom', and 'cdrom-raw' devices are for
> @@ -2199,13 +2200,12 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virConfPtr con
> if (virFileHasSuffix(fileName, ".iso")) {
> char *tmp;
>
> - if (deviceType != NULL) {
> - if (STRCASENEQ(deviceType, "cdrom-image")) {
> - virReportError(VIR_ERR_INTERNAL_ERROR,
> - _("Expecting VMX entry '%s' to be 'cdrom-image' "
> - "but found '%s'"), deviceType_name, deviceType);
> - goto cleanup;
> - }
> + if (deviceType && STRCASENEQ(deviceType, "cdrom-image")) {
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("Expecting VMX entry '%s' to be 'cdrom-image' "
> + "but found '%s'"), deviceType_name,
> + deviceType ? deviceType : "unknown");
The control can get here iff deviceType != NULL.
> + goto cleanup;
> }
>
> virDomainDiskSetType(*def, VIR_STORAGE_TYPE_FILE);
> @@ -2224,7 +2224,7 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virConfPtr con
> * handle it.
> */
> goto ignore;
> - } else if (STRCASEEQ(deviceType, "atapi-cdrom")) {
> + } else if (deviceType && STRCASEEQ(deviceType, "atapi-cdrom")) {
> virDomainDiskSetType(*def, VIR_STORAGE_TYPE_BLOCK);
>
> if (STRCASEEQ(fileName, "auto detect")) {
> @@ -2233,7 +2233,7 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virConfPtr con
> } else if (virDomainDiskSetSource(*def, fileName) < 0) {
> goto cleanup;
> }
> - } else if (STRCASEEQ(deviceType, "cdrom-raw")) {
> + } else if (deviceType && STRCASEEQ(deviceType, "cdrom-raw")) {
> /* Raw access CD-ROMs actually are device='lun' */
> (*def)->device = VIR_DOMAIN_DISK_DEVICE_LUN;
> virDomainDiskSetType(*def, VIR_STORAGE_TYPE_BLOCK);
>
Michal
More information about the libvir-list
mailing list