pgsql: Fix handling of invalidly encoded data in escaping functions - Mailing list pgsql-committers

From Andres Freund
Subject pgsql: Fix handling of invalidly encoded data in escaping functions
Date
Msg-id E1thVPw-006Nxj-M0@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix handling of invalidly encoded data in escaping functions

Previously invalidly encoded input to various escaping functions could lead to
the escaped string getting incorrectly parsed by psql.  To be safe, escaping
functions need to ensure that neither invalid nor incomplete multi-byte
characters can be used to "escape" from being quoted.

Functions which can report errors now return an error in more cases than
before. Functions that cannot report errors now replace invalid input bytes
with a byte sequence that cannot be used to escape the quotes and that is
guaranteed to error out when a query is sent to the server.

The following functions are fixed by this commit:
- PQescapeLiteral()
- PQescapeIdentifier()
- PQescapeString()
- PQescapeStringConn()
- fmtId()
- appendStringLiteral()

Reported-by: Stephen Fewer <stephen_fewer@rapid7.com>
Reviewed-by: Noah Misch <noah@leadboat.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Backpatch-through: 13
Security: CVE-2025-1094

Branch
------
REL_17_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/43a77239d412db194a69b18b7850580e3b78218f

Modified Files
--------------
src/fe_utils/string_utils.c    | 170 ++++++++++++++++++++++++++++++++---------
src/interfaces/libpq/fe-exec.c | 134 +++++++++++++++++++++++---------
2 files changed, 236 insertions(+), 68 deletions(-)


pgsql-committers by date:

Previous
From: Peter Eisentraut
Date:
Subject: pgsql: Translation updates
Next
From: Andres Freund
Date:
Subject: pgsql: Add test of various escape functions