[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