Re: Fix some memory leaks + double free

Uli Schlachter <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
On 07.05.2014 19:04, Sylvestre Ledru wrote:
> From 3cb1dd13903014814dced740d785b101c17fd622 Mon Sep 17 00:00:00 2001
> From: Sylvestre Ledru <[email protected]>
> Date: Wed, 7 May 2014 17:15:22 +0200
> Subject: [PATCH 1/2] Fix some memory leaks found by scan-build, the LLVM/Clang
>  static analyzer
[...]
> diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c
> index c200c28..8e92df2 100644
> --- a/src/cairo-pdf-surface.c
> +++ b/src/cairo-pdf-surface.c
> @@ -2645,8 +2645,10 @@ _cairo_pdf_surface_lookup_jbig2_global (cairo_pdf_surface_t       *surface,
>      memcpy (global.id, global_id, global_id_length);
>      global.id_length = global_id_length;
>      global.res = _cairo_pdf_surface_new_object (surface);
> -    if (global.res.id == 0)
> +    if (global.res.id == 0) {

Could you make this "if (global.id == NULL || global.res.id == 0) {"?

Hm, no, would also have to free global.res in this case... Uhm...

Add a check for malloc() failure after the line that sets global.id, please.

> +	free(global.id);
>  	return _cairo_error (CAIRO_STATUS_NO_MEMORY);
> +    }
>  
>      global.emitted = FALSE;
>      status = _cairo_array_append (&surface->jbig2_global, &global);
[...]

Even without the above change (that really is a different issue than what your
patch handles):

Both patches
Reviewed-by: Uli Schlachter <[email protected]>

Cheers,
Uli
-- 
- Buck, when, exactly, did you lose your mind?
- Three months ago. I woke up one morning married to a pineapple.
  An ugly pineapple... But I loved her.
-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.