pgsql: Fix inadequately-sized output buffer in contrib/unaccent.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix inadequately-sized output buffer in contrib/unaccent.
Дата
Msg-id E1X1zu6-0000bn-QS@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix inadequately-sized output buffer in contrib/unaccent.

The output buffer size in unaccent_lexize() was calculated as input string
length times pg_database_encoding_max_length(), which effectively assumes
that replacement strings aren't more than one character.  While that was
all that we previously documented it to support, the code actually has
always allowed replacement strings of arbitrary length; so if you tried
to make use of longer strings, you were at risk of buffer overrun.  To fix,
use an expansible StringInfo buffer instead of trying to determine the
maximum space needed a-priori.

This would be a security issue if unaccent rules files could be installed
by unprivileged users; but fortunately they can't, so in the back branches
the problem can be labeled as improper configuration by a superuser.
Nonetheless, a memory stomp isn't a nice way of reacting to improper
configuration, so let's back-patch the fix.

Branch
------
REL9_0_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/c6b3fb4c53e6a4b04421d5dc00655e4bc11de8f9

Modified Files
--------------
contrib/unaccent/unaccent.c |   51 +++++++++++++++++++++++--------------------
1 file changed, 27 insertions(+), 24 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: pgsql: Avoid copying index tuples when building an index.
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Fix inadequately-sized output buffer in contrib/unaccent.