From ef3ba802a328633b401522ee447cb260caea46f4 Mon Sep 17 00:00:00 2001 From: Ranier Vilela Date: Fri, 1 Sep 2023 11:21:08 -0300 Subject: [PATCH] Avoid a possible dereference a null pointer If a null locale is reached in this paths. elog will dereference a null pointer. Author: Ranier Vilela (ranier.vf@gmail.com) --- src/backend/utils/adt/pg_locale.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index aa9da99308..58350fc6f8 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -2393,16 +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, "collprovider '%c' does not support pg_strxfrm_prefix()", + locale->provider); return result; } @@ -2430,16 +2429,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, "collprovider '%c' does not support pg_strnxfrm_prefix()", + locale->provider); return result; } -- 2.32.0.windows.1