pgsql: Fix encoding length for EUC_CN. - Mailing list pgsql-committers

From Thomas Munro
Subject pgsql: Fix encoding length for EUC_CN.
Date
Msg-id E1vpEoP-001x21-28@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix encoding length for EUC_CN.

While EUC_CN supports only 1- and 2-byte sequences (CS0, CS1), the
mb<->wchar conversion functions allow 3-byte sequences beginning SS2,
SS3.

Change pg_encoding_max_length() to return 3, not 2, to close a
hypothesized buffer overrun if a corrupted string is converted to wchar
and back again in a newly allocated buffer.  We might reconsider that in
master (ie harmonizing in a different direction), but this change seems
better for the back-branches.

Also change pg_euccn_mblen() to report SS2 and SS3 characters as having
length 3 (following the example of EUC_KR).  Even though such characters
would not pass verification, it's remotely possible that invalid bytes
could be used to compute a buffer size for use in wchar conversion.

Security: CVE-2026-2006
Backpatch-through: 14
Author: Thomas Munro <thomas.munro@gmail.com>
Reviewed-by: Noah Misch <noah@leadboat.com>
Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi>

Branch
------
REL_17_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/838248b1bf6b20762d13878006a404c27189f326

Modified Files
--------------
src/common/wchar.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)


pgsql-committers by date:

Previous
From: Thomas Munro
Date:
Subject: pgsql: Code coverage for most pg_mblen* calls.
Next
From: Thomas Munro
Date:
Subject: pgsql: Fix encoding length for EUC_CN.