Обсуждение: [PATCH] Handle out-of-range timestamps in timestamptz_to_str()
Hello,
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.
Best regards,
Eugeny Goryachev
Patch attached for Postgres 16.6:
https://www.postgresql.org/message-id/flat/EAB008E3-6B87-413F-BA39-22A6ED5DF0F6%40yesql.se#61ba59bee3872723d4cfe809638f039b
I think we can just return a static const string, without copying the string into “buf" as the function returns a “const char *”.On Oct 15, 2025, at 16:54, Алена Васильева <gorcom2012@gmail.com> wrote:Hello,
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.
HighGo Software Co., Ltd.
https://www.highgo.com/
> 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 “constchar *”. The function is documented as returning a value pointing to a static buffer, so it seems better to consistently use that buffer. -- Daniel Gustafsson