Обсуждение: Fix memory leak in tzparser.c

Поиск
Список
Период
Сортировка

Fix memory leak in tzparser.c

От
Shixin Wang
Дата:
Hi hackers,

I noticed a memory leak in the addToArray() function in src/backend/utils/misc/tzparser.c.
When the override parameter is true and a duplicate timezone abbreviation is found,
the code overwrites midptr->zone without freeing the previously allocated memory.

The fix would be:

-               midptr->zone = entry->zone;
+               if (midptr->zone != NULL)
+                   pfree(midptr->zone);
+               midptr->zone = entry->zone;

While the memory is managed by a temp memory context that gets cleaned up
eventually, the coarse-grained management might cause some memory to
accumulate during ParseTzFile() recursive calls when processing @INCLUDE
directives.

I've attached a patch with this change in case anyone thinks it's worth
applying.

Regards,
Shixin Wang




Вложения

Re: Fix memory leak in tzparser.c

От
Michael Paquier
Дата:
On Tue, Dec 16, 2025 at 05:55:32AM +0000, Shixin Wang wrote:
> While the memory is managed by a temp memory context that gets cleaned up
> eventually, the coarse-grained management might cause some memory to
> accumulate during ParseTzFile() recursive calls when processing @INCLUDE
> directives.
>
> I've attached a patch with this change in case anyone thinks it's worth
> applying.

Why does it matter?  load_tzoffsets() is the sole caller of
ParseTzFile() and it uses a temporary memory context named
TZParserMemory to not have to do cleanups like the one you are
proposing here.
--
Michael

Вложения