pgsql: Make sure chr(int) can't create invalid UTF8 sequences.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Make sure chr(int) can't create invalid UTF8 sequences.
Дата
Msg-id E1WlP6M-0004F0-8H@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Make sure chr(int) can't create invalid UTF8 sequences.

Several years ago we changed chr(int) so that if the database encoding is
UTF8, it would interpret its argument as a Unicode code point and expand it
into the appropriate multibyte sequence.  However, we weren't sufficiently
careful about checking validity of the input.  According to RFC3629, UTF8
disallows code points above U+10FFFF (note that the predecessor standard
RFC2279 was more liberal).  Also, both versions of the UTF8 spec agree
that Unicode surrogate-pair codes should never appear in UTF8.  Because
our encoding validity checks follow RFC3629, our failure to enforce these
restrictions in chr() means it could be used to produce text strings that
will be rejected when the database is dumped and reloaded.  To ensure
consistency with the input functions, let's actually apply
pg_utf8_islegal() to the proposed output of chr().

Per discussion, this seems like too much of a behavioral change to
back-patch, but it's not too late to squeeze it into 9.4.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/7894ac5004d5ec158f46296540d3cf49386d30e4

Modified Files
--------------
src/backend/utils/adt/oracle_compat.c |   25 ++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Suppress some more valgrind whining about btree_gist.
Следующее
От: pgsql@postgresql.org
Дата:
Сообщение: pgsql: Tag refs/tags/REL9_4_BETA1 was created