summaryrefslogtreecommitdiff
path: root/json-glib/json-parser.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2013-10-26 20:43:36 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2013-10-27 22:43:18 +0000
commita40e07510208456eeb52776a5ab1d8eb90625fbc (patch)
tree7b37ca679202e71d36c2128804eeb05032208cf6 /json-glib/json-parser.c
parente71d87eefe4fa51b9a391187c7b41d4c04333e02 (diff)
downloadjson-glib-a40e07510208456eeb52776a5ab1d8eb90625fbc.tar.gz
parser: Always perform UTF-8 validation
JSON is defined to be encoded using UTF-8, so we should not rely on the documentation saying so when parsing, but validate the input and eventually provide a recoverable parsing error.
Diffstat (limited to 'json-glib/json-parser.c')
-rw-r--r--json-glib/json-parser.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c
index 12c3ebf..edc13f0 100644
--- a/json-glib/json-parser.c
+++ b/json-glib/json-parser.c
@@ -878,6 +878,15 @@ json_parser_load (JsonParser *parser,
json_parser_clear (parser);
+ if (!g_utf8_validate (data, -1, NULL))
+ {
+ g_set_error_literal (error, JSON_PARSER_ERROR,
+ JSON_PARSER_ERROR_INVALID_DATA,
+ _("JSON data must be UTF-8 encoded"));
+ g_signal_emit (parser, parser_signals[ERROR], 0, *error);
+ return FALSE;
+ }
+
scanner = json_scanner_create (parser);
json_scanner_input_text (scanner, data, length);