[libvirt] [PATCH] qemu: Add extra checks for secret destroy API's
Laine Stump
laine at laine.org
Tue May 10 19:08:05 UTC 2016
On 05/10/2016 02:52 PM, John Ferlan wrote:
> Remove the possibility that a NULL hostdev->privateData or a
> disk->privateData could crash libvirtd by checking for NULL
> before dereferencing for the secinfo structure in the
> qemuDomainSecret{Disk|Hostdev}Destroy functions. The hostdevPriv
> could be NULL if qemuProcessNetworkPrepareDevices adds a new
> hostdev during virDomainNetGetActualHostdev that then gets
> inserted via virDomainHostdevInsert. The hostdevPriv was added
> by commit id '27726d8' and is currently only used by scsi hostdev.
>
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
>
> Discovered by laine and debugged on private IRC channel.
>
> src/qemu/qemu_domain.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 93f0a01..0cddb86 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -903,7 +903,7 @@ qemuDomainSecretDiskDestroy(virDomainDiskDefPtr disk)
> {
> qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
>
> - if (!diskPriv->secinfo)
> + if (!diskPriv || !diskPriv->secinfo)
> return;
>
> qemuDomainSecretInfoFree(&diskPriv->secinfo);
I was thinking maybe this instead:
if (diskPriv && diskPriv->secinfo)
qemuDomainSecretInfoFree(&diskPriv->secinfo);
but yours works too. Either way, ACK.
> @@ -964,7 +964,7 @@ qemuDomainSecretHostdevDestroy(virDomainHostdevDefPtr hostdev)
> qemuDomainHostdevPrivatePtr hostdevPriv =
> QEMU_DOMAIN_HOSTDEV_PRIVATE(hostdev);
>
> - if (!hostdevPriv->secinfo)
> + if (!hostdevPriv || !hostdevPriv->secinfo)
> return;
>
> qemuDomainSecretInfoFree(&hostdevPriv->secinfo);
More information about the libvir-list
mailing list