| From: | Daniel Gustafsson <daniel(at)yesql(dot)se> |
|---|---|
| To: | Sivirilova Marija <m(dot)sivirilova(at)ftdata(dot)ru> |
| Cc: | "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: [PATCH] Fix heap-buffer-overflow in PGTYPEStimestamp_defmt_scan() |
| Date: | 2026-08-19 08:11:54 |
| Message-ID: | 5BDD13C9-D6C8-475D-9946-61A165C2C822@yesql.se |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
> On 19 Aug 2026, at 08:55, Sivirilova Marija <m(dot)sivirilova(at)ftdata(dot)ru> wrote:
>
> Hello, hackers!
> We used the Clang Static Analyzer and found a heap-buffer-overflow in the PGTYPEStimestamp_defmt_scan() function inside src/interfaces/ecpg/pgtypeslib/dt_common.c. When processing template tokens like '%D', '%r', '%R', or '%T', the code allocates a temporary buffer based on the length of the remaining input string (pstr). However, it later concatenates the remaining format string (pfmt) into this buffer using strcat(). If an application attempts to parse a short or truncated time string using a longer, complex format pattern, the format string suffix will exceed the allocated memory, causing a heap-buffer-overflow.
> The issue can be reproduced with a minimal test case (compiling this with AddressSanitizer):
Can you please add testcases to the patch, to make sure we cover these
edgecases in the regression tests.
--
Daniel Gustafsson
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Haibo Yan | 2026-08-19 08:14:47 | Re: Fix for fragile code in hashtext() |
| Previous Message | Anthonin Bonnefoy | 2026-08-19 08:11:02 | Re: Compression of bigger WAL records |