On Wed, Sep 16, 2009 at 02:48:18PM +0200, Carl-Daniel Hailfinger wrote:
> The pattern of
> foo = realloc(foo, size);
> causes a memory leak if realloc fails because realloc does not free foo
> in case of failure, but foo will be NULL after a failure, so there is no
> way to access or free the original foo.
> 
> Fix unchecked [mc]alloc return values as well.
> 
> Signed-off-by: Carl-Daniel Hailfinger <[email protected]>

Looks good and is build-tested by me. But please see below.

Acked-by: Uwe Hermann <[email protected]>


> Index: flashrom-memleak/flashrom.c
> ===================================================================
> --- flashrom-memleak/flashrom.c       (Revision 725)
> +++ flashrom-memleak/flashrom.c       (Arbeitskopie)
> @@ -282,9 +282,12 @@
>  
>  char *strcat_realloc(char *dest, const char *src)
>  {
> -     dest = realloc(dest, strlen(dest) + strlen(src) + 1);
> -     if (!dest)
> +     char *newdest = realloc(dest, strlen(dest) + strlen(src) + 1);
> +     if (!newdest) {
> +             free(dest);
> +             fprintf(stderr, "Could not allocate memory!\n");
>               return NULL;
> +     }
>       strcat(dest, src);
>       return dest;

This looks strange, newdest is the new string but we still use dest in
the strcat below? Is that correct?


Uwe.
-- 
http://www.hermann-uwe.de  | http://www.holsham-traders.de
http://www.crazy-hacks.org | http://www.unmaintained-free-software.org

_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to