mirror of
https://github.com/postgres/postgres.git
synced 2025-05-06 19:59:18 +03:00
Fix memory leak with lower, upper and initcap with ICU-provided collations
The leak happens in str_tolower, str_toupper and str_initcap, which are used in several places including their equivalent SQL-level functions, and can only be triggered when using an ICU-provided collation when converting the input string. b615920 fixed a similar leak. Backpatch down 10 where ICU collations have been introduced. Author: Konstantin Knizhnik Discussion: https://postgr.es/m/94c0ad0a-cbc2-e4a3-7829-2bdeaf9146db@postgrespro.ru Backpatch-through: 10
This commit is contained in:
parent
5524ef5581
commit
f967a1fda8
@ -1551,6 +1551,7 @@ str_tolower(const char *buff, size_t nbytes, Oid collid)
|
|||||||
&buff_conv, buff_uchar, len_uchar);
|
&buff_conv, buff_uchar, len_uchar);
|
||||||
icu_from_uchar(&result, buff_conv, len_conv);
|
icu_from_uchar(&result, buff_conv, len_conv);
|
||||||
pfree(buff_uchar);
|
pfree(buff_uchar);
|
||||||
|
pfree(buff_conv);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@ -1673,6 +1674,7 @@ str_toupper(const char *buff, size_t nbytes, Oid collid)
|
|||||||
&buff_conv, buff_uchar, len_uchar);
|
&buff_conv, buff_uchar, len_uchar);
|
||||||
icu_from_uchar(&result, buff_conv, len_conv);
|
icu_from_uchar(&result, buff_conv, len_conv);
|
||||||
pfree(buff_uchar);
|
pfree(buff_uchar);
|
||||||
|
pfree(buff_conv);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@ -1796,6 +1798,7 @@ str_initcap(const char *buff, size_t nbytes, Oid collid)
|
|||||||
&buff_conv, buff_uchar, len_uchar);
|
&buff_conv, buff_uchar, len_uchar);
|
||||||
icu_from_uchar(&result, buff_conv, len_conv);
|
icu_from_uchar(&result, buff_conv, len_conv);
|
||||||
pfree(buff_uchar);
|
pfree(buff_uchar);
|
||||||
|
pfree(buff_conv);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user