diff options
author | Andres Freund | 2025-02-10 15:03:37 +0000 |
---|---|---|
committer | Andres Freund | 2025-02-10 15:03:37 +0000 |
commit | 4dc28963533704fc7dd922b9447467466a233d89 (patch) | |
tree | a4369935580c83902e9b85bd09c7d794a015878a /src/include/mb/pg_wchar.h | |
parent | 3d17d7d7fb7a4603b48acb275b5a416f110db464 (diff) |
Add pg_encoding_set_invalid()
There are cases where we cannot / do not want to error out for invalidly
encoded input. In such cases it can be useful to replace e.g. an incomplete
multi-byte characters with bytes that will trigger an error when getting
validated as part of a larger string.
Unfortunately, until now, for some encoding no such sequence existed. For
those encodings this commit removes one previously accepted input combination
- we consider that to be ok, as the chosen bytes are outside of the valid
ranges for the encodings, we just previously failed to detect that.
As we cannot add a new field to pg_wchar_table without breaking ABI, this is
implemented "in-line" in the newly added function.
Author: Noah Misch <[email protected]>
Reviewed-by: Andres Freund <[email protected]>
Backpatch-through: 13
Security: CVE-2025-1094
Diffstat (limited to 'src/include/mb/pg_wchar.h')
-rw-r--r-- | src/include/mb/pg_wchar.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/include/mb/pg_wchar.h b/src/include/mb/pg_wchar.h index e50c45c018a..ff7983ee90a 100644 --- a/src/include/mb/pg_wchar.h +++ b/src/include/mb/pg_wchar.h @@ -662,6 +662,7 @@ extern int pg_valid_server_encoding_id(int encoding); * (in addition to the ones just above). The constant tables declared * earlier in this file are also available from libpgcommon. */ +extern void pg_encoding_set_invalid(int encoding, char *dst); extern int pg_encoding_mblen(int encoding, const char *mbstr); extern int pg_encoding_mblen_bounded(int encoding, const char *mbstr); extern int pg_encoding_dsplen(int encoding, const char *mbstr); |