1
0
mirror of https://github.com/postgres/postgres.git synced 2026-10-23 13:29:09 +03:00

Fix expanding 'bounds' in pg_trgm's calc_word_similarity() function

If the 'bounds' array needs to be expanded, because the input contains
more trigrams than the initial guess, the code didn't return the
reallocated array correctly to the caller. That could lead to a crash
in the rare case that the input string becomes longer when it's
lower-cased. The only known instance of that is when an ICU locale is
used with certain single-byte encodings. This was an oversight in
commit 00896ddaf4.

Author: Zsolt Parragi <zsolt.parragi@percona.com>
Backpatch-through: 18
This commit is contained in:
Heikki Linnakangas
2026-02-20 11:56:42 +02:00
parent ed57c207c3
commit 041e02e6a6

View File

@@ -533,7 +533,7 @@ generate_trgm_only(growable_trgm_array *dst, char *str, int slen, TrgmBound **bo
{
if (bounds_allocated < dst->length)
{
bounds = repalloc0_array(bounds, TrgmBound, bounds_allocated, dst->allocated);
bounds = *bounds_p = repalloc0_array(bounds, TrgmBound, bounds_allocated, dst->allocated);
bounds_allocated = dst->allocated;
}