From 967d7eb516d8361c595a6775027867ba37fec050 Mon Sep 17 00:00:00 2001 From: Ranier Vilela Date: Wed, 6 Sep 2023 07:51:27 -0300 Subject: [PATCH v1] Avoid a possible dereference a null pointer If a null locale is reached in this paths. elog will dereference a null pointer. While there, by suggestion of Michal Paquier, fix the words of message to user. Author: Ranier Vilela (ranier.vf@gmail.com) Author: Michal Paquier (michael@paquier.xyz) --- src/backend/utils/adt/pg_locale.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index aa9da99308..1e71a62900 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -2393,17 +2393,15 @@ pg_strxfrm_prefix(char *dest, const char *src, size_t destsize, { size_t result = 0; /* keep compiler quiet */ - if (!locale || locale->provider == COLLPROVIDER_LIBC) - elog(ERROR, "collprovider '%c' does not support pg_strxfrm_prefix()", - locale->provider); + if (!locale) + elog(ERROR, "unsupported collprovider"); #ifdef USE_ICU else if (locale->provider == COLLPROVIDER_ICU) result = pg_strnxfrm_prefix_icu(dest, src, -1, destsize, locale); #endif else - /* shouldn't happen */ - elog(ERROR, "unsupported collprovider: %c", locale->provider); - + elog(ERROR, "could not use collprovider %c: no support for %s", + locale->provider, "pg_strxfrm_prefix"); return result; } @@ -2430,16 +2428,15 @@ pg_strnxfrm_prefix(char *dest, size_t destsize, const char *src, { size_t result = 0; /* keep compiler quiet */ - if (!locale || locale->provider == COLLPROVIDER_LIBC) - elog(ERROR, "collprovider '%c' does not support pg_strnxfrm_prefix()", - locale->provider); + if (!locale) + elog(ERROR, "unsupported collprovider"); #ifdef USE_ICU else if (locale->provider == COLLPROVIDER_ICU) result = pg_strnxfrm_prefix_icu(dest, src, -1, destsize, locale); #endif else - /* shouldn't happen */ - elog(ERROR, "unsupported collprovider: %c", locale->provider); + elog(ERROR, "could not use collprovider %c: no support for %s", + locale->provider, "pg_strnxfrm_prefix"); return result; } -- 2.32.0.windows.1