summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2023-05-25 09:38:12 +0200
committerSzymon Kłos <szymon.klos@collabora.com>2023-07-04 20:46:50 +0200
commit16b0da38515467bf1819ccd88027934481cc5727 (patch)
tree20c752a4f7fc4d8fb3265b10325f88294efc5a83 /tools
parent8fc7ac5569592d5cd026d292202e8c51d670c241 (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.cxx9
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':