From 4d59a316a147d68ff0113cec6b969037d2ee169e Mon Sep 17 00:00:00 2001 From: Jeff Davis Date: Fri, 19 Jun 2026 14:09:31 -0700 Subject: [PATCH v3 1/4] unicode_case.c: ensure valid UTF8. Should be valid, but check before calling unicode_strlower(), etc. Discussion: https://postgr.es/m/c355354e6c3f4a7aafb047361b73db247260fca0.camel@j-davis.com Reviewed-by: Chao Li Backpatch-through: 17 --- src/backend/utils/adt/pg_locale_builtin.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/backend/utils/adt/pg_locale_builtin.c b/src/backend/utils/adt/pg_locale_builtin.c index 01d4f55b07e..7f167e751ea 100644 --- a/src/backend/utils/adt/pg_locale_builtin.c +++ b/src/backend/utils/adt/pg_locale_builtin.c @@ -86,6 +86,7 @@ static size_t strlower_builtin(char *dest, size_t destsize, const char *src, size_t srclen, pg_locale_t locale) { + pg_verifymbstr(src, srclen, false); return unicode_strlower(dest, destsize, src, srclen, locale->builtin.casemap_full); } @@ -103,6 +104,7 @@ strtitle_builtin(char *dest, size_t destsize, const char *src, size_t srclen, .prev_alnum = false, }; + pg_verifymbstr(src, srclen, false); return unicode_strtitle(dest, destsize, src, srclen, locale->builtin.casemap_full, initcap_wbnext, &wbstate); @@ -112,6 +114,7 @@ static size_t strupper_builtin(char *dest, size_t destsize, const char *src, size_t srclen, pg_locale_t locale) { + pg_verifymbstr(src, srclen, false); return unicode_strupper(dest, destsize, src, srclen, locale->builtin.casemap_full); } @@ -120,6 +123,7 @@ static size_t strfold_builtin(char *dest, size_t destsize, const char *src, size_t srclen, pg_locale_t locale) { + pg_verifymbstr(src, srclen, false); return unicode_strfold(dest, destsize, src, srclen, locale->builtin.casemap_full); } -- 2.43.0