Re: BUG #15838: [contrib] vacuumlo: schema variable checked for NULL three times

From: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
To: taem(at)linukz(dot)org
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #15838: [contrib] vacuumlo: schema variable checked for NULL three times
Date: 2019-06-07 09:21:07
Message-ID: df739c70-a17a-7d97-a621-ab61dbf03a8f@iki.fi
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 07/06/2019 09:15, PG Bug reporting form wrote:
> vacuumlo() has this (starting on line 239):
>
> if (!schema || !table || !field)
> {
> fprintf(stderr, "%s", PQerrorMessage(conn));
> PQclear(res);
> PQfinish(conn);
> if (schema != NULL)
> PQfreemem(schema);
> if (schema != NULL)
> PQfreemem(table);
> if (schema != NULL)
> PQfreemem(field);
> return -1;
> }
>
> I think this can be replaced with this:
>
> if (!schema || !table || !field)
> {
> fprintf(stderr, "%s", PQerrorMessage(conn));
> PQclear(res);
> PQfinish(conn);
> if (schema != NULL) {
> PQfreemem(schema);
> PQfreemem(table);
> PQfreemem(field);
> }
> return -1;
> }

Hmm. Currently, if allocating 'schema' fails, but allocating 'table' or
'field' succeeds, you leak memory. I'm pretty sure that was intended to be:

if (!schema || !table || !field)
{
fprintf(stderr, "%s", PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
if (schema != NULL)
PQfreemem(schema);
if (table != NULL)
PQfreemem(table);
if (field != NULL)
PQfreemem(field);
return -1;
}

I'll go fix it that way, thanks for the report!

- Heikki

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Timur Birsh 2019-06-07 09:29:05 Re: BUG #15838: [contrib] vacuumlo: schema variable checked for NULL three times
Previous Message Sasa Vilic 2019-06-07 07:22:30 Unable to create postgis extension on CentOS7 when using pg11 and newest postgis 2.5 (postgis25_11-2.5.2-2.rhel7.x86_64) due to undefined symbol OGR_GT_Flatten