commit 2250ad7

default  ·  2023-03-07 08:56:16 +0000 UTC
parent 23177e9
Sanitize control codes in JSON code.
2 files changed,  +5, -8
+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