Fix overrun when comparing with unterminated ICU language string.

The overrun was introduced in commit c4ff35f10.

Author: Andreas Karlsson <andreas@proxel.se>
Reported-by: Alexander Lakhin <exclusion@gmail.com>
Discussion: https://postgr.es/m/96d80a47-f17f-42fa-82b1-2908efbd6541@gmail.com
Backpatch-through: 18
master
Jeff Davis 4 weeks ago
parent e89f98ff03
commit 06ce97b999
  1. 6
      src/backend/utils/adt/pg_locale_icu.c

@ -989,11 +989,11 @@ static int32_t
foldcase_options(const char *locale)
{
uint32 options = U_FOLD_CASE_DEFAULT;
char lang[3];
char lang[ULOC_LANG_CAPACITY];
UErrorCode status = U_ZERO_ERROR;
uloc_getLanguage(locale, lang, 3, &status);
if (U_SUCCESS(status))
uloc_getLanguage(locale, lang, ULOC_LANG_CAPACITY, &status);
if (U_SUCCESS(status) && status != U_STRING_NOT_TERMINATED_WARNING)
{
/*
* The option name is confusing, but it causes u_strFoldCase to use

Loading…
Cancel
Save