commit 2250ad7
default
·
2023-03-07 08:56:16 +0000 UTC
parent 23177e9
Sanitize control codes in JSON code.
M
format.c
+1,
-8
1@@ -179,15 +179,8 @@ d_char *sanitize(const char *content)
2 xs *sl;
3 int n = 0;
4 char *p, *v;
5- xs *content2 = xs_dup(content);
6
7- /* strip dangerous control codes */
8- for (n = 0; content2[n]; n++) {
9- if (xs_type(&content2[n]) != XSTYPE_STRING)
10- content2[n] = ' ';
11- }
12-
13- sl = xs_regex_split(content2, "</?[^>]+>");
14+ sl = xs_regex_split(content, "</?[^>]+>");
15
16 p = sl;
17
+4,
-0
1@@ -260,6 +260,10 @@ static xs_val *_xs_json_loads_lexer(const char **json, js_type *t)
2 else
3 cp = i;
4
5+ /* replace dangerous control codes with the replacement char */
6+ if (cp >= '\0' && cp < ' ' && !strchr("\r\n\t", cp))
7+ cp = 0xfffd;
8+
9 v = xs_utf8_enc(v, cp);
10 c = '\0';
11