Re: Avoid resource leak (contrib/postgres_fdw/connection.c)

From: "Matheus Alcantara" <matheusssilv97(at)gmail(dot)com>
To: "Fujii Masao" <masao(dot)fujii(at)gmail(dot)com>, "Ranier Vilela" <ranier(dot)vf(at)gmail(dot)com>
Cc: "Pg Hackers" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Avoid resource leak (contrib/postgres_fdw/connection.c)
Date: 2026-03-18 17:42:35
Message-ID: DH63DW8BZ6NS.J422FM6QTLW2@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 16/03/26 20:07, Fujii Masao wrote:
> On Mon, Mar 16, 2026 at 8:46 PM Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> wrote:
>>
>> Hi.
>>
>> Per Coverity.
>>
>> CID 1645716: (#1 of 1): Resource leak (RESOURCE_LEAK)
>> 8. leaked_storage: Variable str going out of scope leaks the storage str.data points to.
>>
>> The function *postgres_fdw_connection* leaks the contents of
>> var str.data
>> Once that function *cstring_to_text* palloc the contents
>> must be necessary to free the var str.data.
>
> It seems that postgres_fdw_connection() is expected to be called by
> ForeignServerConnectionString() via OidFunctionCall3(),
> and to allocate memory (including str.data) in the FDWConnectionContext
> memory context created by ForeignServerConnectionString().
>
> After calling postgres_fdw_connection(), ForeignServerConnectionString()
> deletes FDWConnectionContext. So it seems to me that any memory
> allocated in that context, including str.data, would not leak. No?
>

Yeah, this sounds correct, but I'm wondering if the current pfree
calls on postgres_fdw_connection() is needed?

My previous review was assuming that any allocated memory on
postgres_fdw_connection() should be free at the end because of these
calls, but ForeignServerConnectionString() already assume that this
function leak memory:
/*
* GetForeignServer, GetForeignDataWrapper, and the connection function
* itself all leak memory into CurrentMemoryContext. Switch to a temporary
* context for easy cleanup.
*/
tempContext = AllocSetContextCreate(CurrentMemoryContext,
"FDWConnectionContext",
ALLOCSET_SMALL_SIZES);

--
Matheus Alcantara
EDB: https://www.enterprisedb.com

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2026-03-18 17:46:14 Re: dshash_find_or_insert vs. OOM
Previous Message Tom Lane 2026-03-18 17:33:46 Re: Enable -Wstrict-prototypes and -Wold-style-definition by default