[libvirt] [PATCH] openvz_driver.c: avoid leak on OOM error path
Matthias Bolte
matthias.bolte at googlemail.com
Mon Feb 15 17:49:39 UTC 2010
2010/2/15 Jim Meyering <jim at meyering.net>:
> It looks like openvzFreeDriver cannot call VIR_FREE on its buffer
> argument, because of the use in the function that just happens to
> be a few lines below. These are the only two uses of openvzFreeDriver.
>
>
> >From 0a616cd03cca9c9d89f23dadd52cd23c30789aca Mon Sep 17 00:00:00 2001
> From: Jim Meyering <meyering at redhat.com>
> Date: Mon, 15 Feb 2010 18:33:38 +0100
> Subject: [PATCH] openvz_driver.c: avoid leak on OOM error path
>
> * src/openvz/openvz_driver.c (openvzOpen): Free "driver" buffer
> upon failure.
> ---
> src/openvz/openvz_driver.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c
> index 68d0398..3a8a82f 100644
> --- a/src/openvz/openvz_driver.c
> +++ b/src/openvz/openvz_driver.c
> @@ -1245,22 +1245,23 @@ static virDrvOpenStatus openvzOpen(virConnectPtr conn,
> goto cleanup;
>
> if (openvzExtractVersion(conn, driver) < 0)
> goto cleanup;
>
> conn->privateData = driver;
>
> return VIR_DRV_OPEN_SUCCESS;
>
> cleanup:
> openvzFreeDriver(driver);
> + VIR_FREE(driver);
> return VIR_DRV_OPEN_ERROR;
> };
>
> static int openvzClose(virConnectPtr conn) {
> struct openvz_driver *driver = conn->privateData;
>
> openvzFreeDriver(driver);
> conn->privateData = NULL;
>
> return 0;
> }
> --
> 1.7.0.181.g41533
>
Why do you think openvzFreeDriver must not VIR_FREE the driver object?
The driver object is allocated per connection in openvzOpen, so
openvzClose has to VIR_FREE it.
Matthias
More information about the libvir-list
mailing list