Re: Small memory leak in execute.c of ECPG driver - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: Small memory leak in execute.c of ECPG driver
Date
Msg-id 54D08836.1070003@vmware.com
Whole thread Raw
In response to Small memory leak in execute.c of ECPG driver  (Michael Paquier <michael.paquier@gmail.com>)
Responses Re: Small memory leak in execute.c of ECPG driver  (Michael Paquier <michael.paquier@gmail.com>)
List pgsql-hackers
On 02/03/2015 08:58 AM, Michael Paquier wrote:
> Hi all,
>
> In exactly 3 places of the ECPG driver (for numeric, for interval and
> for date), we do something as follows:
> /* Allocation of mallocedval */
> if (!(mallocedval = ecpg_strdup("array [", lineno)))
>          return false;
>
> for (element = 0; element < var->arrsize; element++)
> {
>          int                     result;
>
>          ptr = stuff_alloc();
>          if (!ptr)
>                  return false; <= Leak here of mallocedval
>
> It happens that if the allocation done within this for loop fails we
> leak mallocedval that was previously allocated. Attached is a patch to
> fix this issue spotted by Coverity.

I think there are more similar leaks nearby. After the first hunk, 
there's another if-check with "return false" that also leaks 
mallocedval. Right after the two other hunks, if the ecpg_realloc fails, 
we again leak mallocedval.

I wonder why Coverity didn't warn about those? Maybe it would've, after 
fixing the first ones.

- Heikki



pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: Missing markup in pg_receivexlog.sgml
Next
From: Matthew Kelly
Date:
Subject: Re: [GENERAL] 4B row limit for CLOB tables