pgsql: Avoid fetching one past the end of translate()'s "to" parameter.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Avoid fetching one past the end of translate()'s "to" parameter.
Дата
Msg-id E1pXPLl-001N4T-Mq@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Avoid fetching one past the end of translate()'s "to" parameter.

This is usually harmless, but if you were very unlucky it could
provoke a segfault due to the "to" string being right up against
the end of memory.  Found via valgrind testing (so we might've
found it earlier, except that our regression tests lacked any
exercise of translate()'s deletion feature).

Fix by switching the order of the test-for-end-of-string and
advance-pointer steps.  While here, compute "to_ptr + tolen"
just once.  (Smarter compilers might figure that out for
themselves, but let's just make sure.)

Report and fix by Daniil Anisimov, in bug #17816.

Discussion: https://postgr.es/m/17816-70f3d2764e88a108@postgresql.org

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/eae09137d53ecb9cb4c1ba7624723f1c1cbebeec

Modified Files
--------------
src/backend/utils/adt/oracle_compat.c | 12 +++++++-----
src/test/regress/expected/strings.out |  6 ++++++
src/test/regress/sql/strings.sql      |  1 +
3 files changed, 14 insertions(+), 5 deletions(-)


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

Предыдущее
От: Tomas Vondra
Дата:
Сообщение: pgsql: Fix condition in pg_dump TAP test
Следующее
От: Michael Paquier
Дата:
Сообщение: pgsql: pageinspect: Fix crash with gist_page_items()