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-003NWU-WF@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_12_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/c25a929a6c8869a148b3ee064eb03ab1d3cb127d Modified Files -------------- src/backend/utils/adt/json.c | 29 +++++++++++++++++++-- src/test/regress/expected/json_encoding.out | 24 +++++++++--------- src/test/regress/expected/json_encoding_1.out | 36 +++++++++++++-------------- 3 files changed, 57 insertions(+), 32 deletions(-)
В списке pgsql-committers по дате отправления: