Mercurial > dovecot > core-2.2
changeset 19656:5cc83e9cbfee
lib: json_append_escaped() doesn't need to escape the 8bit chars.
We'll assume that the input is valid UTF-8.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 28 Jan 2016 15:05:38 +0200 |
parents | 5bdb2be321ba |
children | ea87c511c6c8 |
files | src/lib/json-parser.c src/lib/json-parser.h src/lib/test-json-parser.c |
diffstat | 3 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/json-parser.c Thu Jan 28 13:45:48 2016 +0200 +++ b/src/lib/json-parser.c Thu Jan 28 15:05:38 2016 +0200 @@ -658,7 +658,7 @@ str_append(dest, "\\\\"); break; default: - if (*src < 32) + if ((unsigned char)*src < 32) str_printfa(dest, "\\u%04x", *src); else str_append_c(dest, *src);
--- a/src/lib/json-parser.h Thu Jan 28 13:45:48 2016 +0200 +++ b/src/lib/json-parser.h Thu Jan 28 15:05:38 2016 +0200 @@ -36,7 +36,7 @@ int json_parse_next_stream(struct json_parser *parser, struct istream **input_r); -/* Append data to already opened JSON string. */ +/* Append data to already opened JSON string. src should be valid UTF-8 data. */ void json_append_escaped(string_t *dest, const char *src); #endif
--- a/src/lib/test-json-parser.c Thu Jan 28 13:45:48 2016 +0200 +++ b/src/lib/test-json-parser.c Thu Jan 28 15:05:38 2016 +0200 @@ -163,8 +163,19 @@ test_end(); } +static void test_json_append_escaped(void) +{ + string_t *str = t_str_new(32); + + test_begin("json_append_escaped()"); + json_append_escaped(str, "\b\f\r\n\t\"\\\001\002-\xC3\xA4"); + test_assert(strcmp(str_c(str), "\\b\\f\\r\\n\\t\\\"\\\\\\u0001\\u0002-\xC3\xA4") == 0); + test_end(); +} + void test_json_parser(void) { test_json_parser_success(TRUE); test_json_parser_success(FALSE); + test_json_append_escaped(); }