Re: [PATCH] Handle out-of-range timestamps in timestamptz_to_str()

Daniel Gustafsson <daniel@yesql.se>

From: Daniel Gustafsson <daniel@yesql.se>
To: Chao Li <li.evan.chao@gmail.com>
Cc: Алена Васильева <gorcom2012@gmail.com>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2025-10-15T09:17:14Z
Lists: pgsql-hackers
> On 15 Oct 2025, at 11:12, Chao Li <li.evan.chao@gmail.com> wrote:
>> On Oct 15, 2025, at 16:54, Алена Васильева <gorcom2012@gmail.com> wrote:

>> The function timestamptz_to_str() in src/bin/pg_waldump/compat.c does not
>> handle the case when localtime() returns NULL, which can happen for timestamps
>> that are out of the supported time_t range on some platforms.
>> 
>> This patch adds a simple check for a NULL return value and ensures that the
>> function returns a clear error string "(timestamp out of range)" instead of
>> causing undefined behavior or a crash.

Ah yes, thanks for the reminder, it's been on my todo from
EAB008E3-6B87-413F-BA39-22A6ED5DF0F6@yesql.se for some time.

> I think we can just return a static const string, without copying the string into “buf" as the function returns a “const char *”.

The function is documented as returning a value pointing to a static buffer, so
it seems better to consistently use that buffer.

--
Daniel Gustafsson