diff options
author | Jeff Davis <jdavis@postgresql.org> | 2023-03-24 08:47:51 -0700 |
---|---|---|
committer | Jeff Davis <jdavis@postgresql.org> | 2023-03-24 08:48:03 -0700 |
commit | a03b3b6b4a7275a66e38280f49fddb9aec8dff3d (patch) | |
tree | 8f3b1fe81596b7426f8ba8f85f8def59ba839e34 /src/backend/utils/adt/pg_locale.c | |
parent | 9a242899158c776377696d445df74db270150385 (diff) | |
download | postgresql-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.c | 3 |
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)))); + } } } |