]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Check for unterminated strings when calling uloc_getLanguage().
authorJeff Davis <jdavis@postgresql.org>
Tue, 14 Apr 2026 19:06:02 +0000 (12:06 -0700)
committerJeff Davis <jdavis@postgresql.org>
Tue, 14 Apr 2026 21:46:14 +0000 (14:46 -0700)
Missed by commit 1671f990dd66.

Author: Andreas Karlsson <andreas@proxel.se>
Discussion: https://postgr.es/m/118ca69e-47eb-42e1-83e9-72ccf40dd6fd@proxel.se
Backpatch-through: 16

src/bin/initdb/initdb.c

index 509f1114ef6ebd24d9d9e4d9fdd8892d68e6ba76..2ee834f07656b85511ab9db3f0a0322ce94a467f 100644 (file)
@@ -2403,7 +2403,7 @@ icu_validate_locale(const char *loc_str)
        /* validate that we can extract the language */
        status = U_ZERO_ERROR;
        uloc_getLanguage(loc_str, lang, ULOC_LANG_CAPACITY, &status);
-       if (U_FAILURE(status))
+       if (U_FAILURE(status) || status == U_STRING_NOT_TERMINATED_WARNING)
        {
                pg_fatal("could not get language from locale \"%s\": %s",
                                 loc_str, u_errorName(status));
@@ -2423,7 +2423,7 @@ icu_validate_locale(const char *loc_str)
 
                status = U_ZERO_ERROR;
                uloc_getLanguage(otherloc, otherlang, ULOC_LANG_CAPACITY, &status);
-               if (U_FAILURE(status))
+               if (U_FAILURE(status) || status == U_STRING_NOT_TERMINATED_WARNING)
                        continue;
 
                if (strcmp(lang, otherlang) == 0)