[libvirt] [PATCH v4 06/13] parallels: fix leaks in parallelsFindVolumes

Daniel Veillard veillard at redhat.com
Tue Dec 11 07:54:28 UTC 2012


On Tue, Dec 04, 2012 at 05:43:06PM +0400, Dmitry Guryanov wrote:
> We always have to close opened dir and free 'path'.
> 
> Signed-off-by: Dmitry Guryanov <dguryanov at parallels.com>
> ---
>  src/parallels/parallels_storage.c |   20 ++++++++++++--------
>  1 files changed, 12 insertions(+), 8 deletions(-)
> 
> diff --git a/src/parallels/parallels_storage.c b/src/parallels/parallels_storage.c
> index 148d870..0d59cce 100644
> --- a/src/parallels/parallels_storage.c
> +++ b/src/parallels/parallels_storage.c
> @@ -86,13 +86,14 @@ parallelsFindVolumes(virStoragePoolObjPtr pool)
>  {
>      DIR *dir;
>      struct dirent *ent;
> -    char *path;
> +    char *path = NULL;
> +    int ret = -1;
>  
>      if (!(dir = opendir(pool->def->target.path))) {
>          virReportSystemError(errno,
>                               _("cannot open path '%s'"),
>                               pool->def->target.path);
> -        goto cleanup;
> +        return -1;
>      }
>  
>      while ((ent = readdir(dir)) != NULL) {
> @@ -100,18 +101,21 @@ parallelsFindVolumes(virStoragePoolObjPtr pool)
>              continue;
>  
>          if (!(path = virFileBuildPath(pool->def->target.path,
> -                                      ent->d_name, NULL)))
> -            goto no_memory;
> +                                      ent->d_name, NULL))) {
> +            virReportOOMError();
> +            goto cleanup;
> +        }
>          if (!parallelsStorageVolumeDefine(pool, NULL, path, false))
>              goto cleanup;
> +
>          VIR_FREE(path);
>      }
>  
> -    return 0;
> -no_memory:
> -    virReportOOMError();
> +    ret = 0;
>  cleanup:
> -    return -1;
> +    VIR_FREE(path);
> +    closedir(dir);
> +    return ret;
>  
>  }

  ACK,

Daniel

-- 
Daniel Veillard      | Open Source and Standards, Red Hat
veillard at redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list