[You don't often get email from mprivozn@redhat.com. Learn why this is important at
https://aka.ms/LearnAboutSenderIdentification ]
On 4/29/24 14:43, Fima Shevrin via Devel wrote:
> When creating a snapshot of a VM with multiple hard disks,
> the snapshot takes into account the presence of all disks
> in the system. If, over time, one of the disks is deleted,
> the snapshot will continue to store knowledge of the deleted disk.
> This results in the fact that at the moment of deleting the snapshot,
> at the validation stage, a disk from the snapshot will be searched which
> is not in the VM configuration. As a result, vmdisk variable will
> be equal to NULL. Dereferencing a null pointer at the time of calling
> virStorageSourceIsSameLocation(vmdisk->src, disk->src) will result in SIGSEGV.
>
> Signed-off-by: Fima Shevrin <efim.shevrin@virtuozzo.com>
> ---
> src/qemu/qemu_snapshot.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c
> index 09ec959f10..bf93cd485e 100644
> --- a/src/qemu/qemu_snapshot.c
> +++ b/src/qemu/qemu_snapshot.c
> @@ -3806,7 +3806,7 @@ qemuSnapshotDeleteValidate(virDomainObj *vm,
> vmdisk = qemuDomainDiskByName(vm->def, snapDisk->name);
> disk = qemuDomainDiskByName(snapdef->parent.dom, snapDisk->name);
>
> - if (!virStorageSourceIsSameLocation(vmdisk->src, disk->src)) {
> + if (vmdisk != NULL && !virStorageSourceIsSameLocation(vmdisk->src, disk->src)) {
If vmdisk is NULL, shouldn't this function
(qemuSnapshotDeleteValidate()) return an error?
Similarly, disk can be NULL too.
> virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
> _("disk image '%1$s' for internal snapshot '%2$s' is not the same as disk image currently used by VM"),
> snapDisk->name, snap->def->name);
Michal