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


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to