From af566a030c4a70ed037eda075a4c09f14732482b Mon Sep 17 00:00:00 2001 Message-Id: From: Cole Robinson Date: Wed, 12 Aug 2015 10:47:16 +0200 Subject: [PATCH] domain: Fix crash if trying to live update disk https://bugzilla.redhat.com/show_bug.cgi?id=1007228 If you pass XML to UpdateDevice, and the original device didn't have a block, libvirtd crashes trying to read the original NULL serial string. Use _NULLABLE string comparisons to avoid the crash. A couple other properties needed the change too. (cherry picked from commit c7790408d7e16b1ad00a690433d9310f104994f7) Signed-off-by: Martin Kletzander Signed-off-by: Jiri Denemark --- src/conf/domain_conf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index aa1b860..8784367 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5783,28 +5783,28 @@ virDomainDiskDiffersSourceOnly(virDomainDiskDefPtr disk, CHECK_EQ(transient, "transient", true); - if (disk->serial && STRNEQ(disk->serial, orig_disk->serial)) { + if (disk->serial && STRNEQ_NULLABLE(disk->serial, orig_disk->serial)) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("cannot modify field '%s' of the disk"), "serial"); return false; } - if (disk->wwn && STRNEQ(disk->wwn, orig_disk->wwn)) { + if (disk->wwn && STRNEQ_NULLABLE(disk->wwn, orig_disk->wwn)) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("cannot modify field '%s' of the disk"), "wwn"); return false; } - if (disk->vendor && STRNEQ(disk->vendor, orig_disk->vendor)) { + if (disk->vendor && STRNEQ_NULLABLE(disk->vendor, orig_disk->vendor)) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("cannot modify field '%s' of the disk"), "vendor"); return false; } - if (disk->product && STRNEQ(disk->product, orig_disk->product)) { + if (disk->product && STRNEQ_NULLABLE(disk->product, orig_disk->product)) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("cannot modify field '%s' of the disk"), "product"); -- 2.5.0