diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2023-05-25 09:38:12 +0200 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2023-07-04 20:46:50 +0200 |
commit | 16b0da38515467bf1819ccd88027934481cc5727 (patch) | |
tree | 20c752a4f7fc4d8fb3265b10325f88294efc5a83 /tools | |
parent | 8fc7ac5569592d5cd026d292202e8c51d670c241 (diff) |
jsdialog: encode properly control characters
according to https://www.rfc-editor.org/rfc/rfc7159#section-7
strings in JSON should contain control characters (0x00-0x1f)
encoded as \uXXXX
Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: I1f828f64e57328b5fa2dcf5853afe0d6ea643081
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152262
Reviewed-by: Attila Szűcs <attila.szucs@collabora.com>
Tested-by: Attila Szűcs <attila.szucs@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153946
Tested-by: Jenkins
Diffstat (limited to 'tools')
-rw-r--r-- | tools/source/misc/json_writer.cxx | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/tools/source/misc/json_writer.cxx b/tools/source/misc/json_writer.cxx index 3111cac2f816..8303e4c2973e 100644 --- a/tools/source/misc/json_writer.cxx +++ b/tools/source/misc/json_writer.cxx @@ -135,6 +135,15 @@ static char getEscapementChar(char ch) static bool writeEscapedSequence(sal_uInt32 ch, char*& pos) { + // control characters + if (ch <= 0x1f) + { + int written = snprintf(pos, 7, "\\u%.4x", static_cast<unsigned int>(ch)); + if (written > 0) + pos += written; + return true; + } + switch (ch) { case '\b': |