aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/pg_locale.c
diff options
context:
space:
mode:
authorJeff Davis <jdavis@postgresql.org>2023-03-24 08:47:51 -0700
committerJeff Davis <jdavis@postgresql.org>2023-03-24 08:48:03 -0700
commita03b3b6b4a7275a66e38280f49fddb9aec8dff3d (patch)
tree8f3b1fe81596b7426f8ba8f85f8def59ba839e34 /src/backend/utils/adt/pg_locale.c
parent9a242899158c776377696d445df74db270150385 (diff)
downloadpostgresql-a03b3b6b4a7275a66e38280f49fddb9aec8dff3d.tar.gz
postgresql-a03b3b6b4a7275a66e38280f49fddb9aec8dff3d.zip
Avoid potential UCollator leak for older ICU versions.
ICU versions 53 and earlier rely on icu_set_collation_attributes() to process the attributes in the locale string. Avoid leaking the already-opened UCollator object if an error is encountered. Discussion: https://postgr.es/m/04182066-7655-344a-b8b7-040b1b2490fb%40enterprisedb.com Reviewed-by: Peter Eisentraut
Diffstat (limited to 'src/backend/utils/adt/pg_locale.c')
-rw-r--r--src/backend/utils/adt/pg_locale.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c
index 41b0e9fe691..386768ee767 100644
--- a/src/backend/utils/adt/pg_locale.c
+++ b/src/backend/utils/adt/pg_locale.c
@@ -2810,9 +2810,12 @@ icu_set_collation_attributes(UCollator *collator, const char *loc)
* message across ICU versions.
*/
if (U_FAILURE(status))
+ {
+ ucol_close(collator);
ereport(ERROR,
(errmsg("could not open collator for locale \"%s\": %s",
loc, u_errorName(status))));
+ }
}
}