On 08/10/2015 07:33 PM, Cole Robinson wrote: > If you pass <disk><serial> XML to UpdateDevice, and the original device > didn't have a <serial> 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. > --- > src/conf/domain_conf.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > Using STRNEQ_NULLABLE means you probably don't have to check the disk->* value either, right? ACK - with that adjustment... John > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index fd0450f..f1e02e3 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -5871,28 +5871,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"); > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list