diff mbox

[2/2] vmdk: fix buf leak in vmdk_parse_extents()

Message ID 1409861083-9634-3-git-send-email-stefanha@redhat.com
State New
Headers show

Commit Message

Stefan Hajnoczi Sept. 4, 2014, 8:04 p.m. UTC
vmdk_open_sparse() does not take ownership of buf so the caller always
needs to free it.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 block/vmdk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Max Reitz Sept. 4, 2014, 8:13 p.m. UTC | #1
On 04.09.2014 22:04, Stefan Hajnoczi wrote:
> vmdk_open_sparse() does not take ownership of buf so the caller always
> needs to free it.
>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>   block/vmdk.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Max Reitz <mreitz@redhat.com>
Fam Zheng Sept. 5, 2014, 4:52 a.m. UTC | #2
On Thu, 09/04 21:04, Stefan Hajnoczi wrote:
> vmdk_open_sparse() does not take ownership of buf so the caller always
> needs to free it.
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  block/vmdk.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/block/vmdk.c b/block/vmdk.c
> index 9bf28f3..a1cb911 100644
> --- a/block/vmdk.c
> +++ b/block/vmdk.c
> @@ -846,8 +846,8 @@ static int vmdk_parse_extents(const char *desc, BlockDriverState *bs,
>              } else {
>                  ret = vmdk_open_sparse(bs, extent_file, bs->open_flags, buf, errp);
>              }
> +            g_free(buf);
>              if (ret) {
> -                g_free(buf);
>                  bdrv_unref(extent_file);
>                  return ret;
>              }
> -- 
> 1.9.3
> 
Reviewed-by: Fam Zheng <famz@redhat.com>
diff mbox

Patch

diff --git a/block/vmdk.c b/block/vmdk.c
index 9bf28f3..a1cb911 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -846,8 +846,8 @@  static int vmdk_parse_extents(const char *desc, BlockDriverState *bs,
             } else {
                 ret = vmdk_open_sparse(bs, extent_file, bs->open_flags, buf, errp);
             }
+            g_free(buf);
             if (ret) {
-                g_free(buf);
                 bdrv_unref(extent_file);
                 return ret;
             }