pgsql: Fix JSON error reporting for many cases of erroneous string valu

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix JSON error reporting for many cases of erroneous string valu
Дата
Msg-id E1pbnhU-003NWL-Uq@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix JSON error reporting for many cases of erroneous string values.

The majority of error exit cases in json_lex_string() failed to
set lex->token_terminator, causing problems for the error context
reporting code: it would see token_terminator less than token_start
and do something more or less nuts.  In v14 and up the end result
could be as bad as a crash in report_json_context().  Older
versions accidentally avoided that fate; but all versions produce
error context lines that are far less useful than intended,
because they'd stop at the end of the prior token instead of
continuing to where the actually-bad input is.

To fix, invent some macros that make it less notationally painful
to do the right thing.  Also add documentation about what the
function is actually required to do; and in >= v14, add an assertion
in report_json_context about token_terminator being sufficiently
far advanced.

Per report from Nikolay Shaplov.  Back-patch to all supported
versions.

Discussion: https://postgr.es/m/7332649.x5DLKWyVIX@thinkpad-pgpro

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/74a1a36d755bf5a5c656d78ef7f1df1cfeeeeb20

Modified Files
--------------
src/backend/utils/adt/jsonfuncs.c             |  1 +
src/common/jsonapi.c                          | 77 ++++++++++++++++-----------
src/test/regress/expected/json_encoding.out   | 24 ++++-----
src/test/regress/expected/json_encoding_1.out | 24 ++++-----
4 files changed, 72 insertions(+), 54 deletions(-)


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: pgsql: Add standard collation UNICODE
Следующее
От: Jeff Davis
Дата:
Сообщение: Re: pgsql: Add standard collation UNICODE