mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-26 14:35:18 +00:00
blockinfo: fix qemu regression in handling disk name
Regression introduced in commit 89b6284fd, due to an incorrect conversion to the new means of converting disk names back to the correct object. * src/qemu/qemu_driver.c (qemuDomainGetBlockInfo): Avoid NULL deref.
This commit is contained in:
parent
4d3d3e475f
commit
6977fd95bf
@ -7755,8 +7755,8 @@ static int qemuDomainGetBlockInfo(virDomainPtr dom,
|
|||||||
virStorageFileMetadata *meta = NULL;
|
virStorageFileMetadata *meta = NULL;
|
||||||
virDomainDiskDefPtr disk = NULL;
|
virDomainDiskDefPtr disk = NULL;
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
|
int i;
|
||||||
int format;
|
int format;
|
||||||
const char *actual;
|
|
||||||
|
|
||||||
virCheckFlags(0, -1);
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
@ -7778,12 +7778,19 @@ static int qemuDomainGetBlockInfo(virDomainPtr dom,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check the path belongs to this domain. */
|
/* Check the path belongs to this domain. */
|
||||||
if (!(actual = virDomainDiskPathByName(vm->def, path))) {
|
if ((i = virDomainDiskIndexByName(vm->def, path, false)) < 0) {
|
||||||
qemuReportError(VIR_ERR_INVALID_ARG,
|
qemuReportError(VIR_ERR_INVALID_ARG,
|
||||||
_("invalid path %s not assigned to domain"), path);
|
_("invalid path %s not assigned to domain"), path);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
path = actual;
|
disk = vm->def->disks[i];
|
||||||
|
if (!disk->src) {
|
||||||
|
qemuReportError(VIR_ERR_INVALID_ARG,
|
||||||
|
_("disk %s does not currently have a source assigned"),
|
||||||
|
path);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
path = disk->src;
|
||||||
|
|
||||||
/* The path is correct, now try to open it and get its size. */
|
/* The path is correct, now try to open it and get its size. */
|
||||||
fd = open(path, O_RDONLY);
|
fd = open(path, O_RDONLY);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user