mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-12 15:52:55 +00:00
domain: Fix crash if trying to live update disk <serial>
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. (cherry picked from commit c7790408d7e16b1ad00a690433d9310f104994f7)
This commit is contained in:
parent
85cf1ad5aa
commit
79be4dbecb
@ -5815,28 +5815,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");
|
||||
|
Loading…
x
Reference in New Issue
Block a user