diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2013-10-26 20:43:36 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2013-10-27 22:43:18 +0000 |
commit | a40e07510208456eeb52776a5ab1d8eb90625fbc (patch) | |
tree | 7b37ca679202e71d36c2128804eeb05032208cf6 /json-glib/json-parser.c | |
parent | e71d87eefe4fa51b9a391187c7b41d4c04333e02 (diff) | |
download | json-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.c | 9 |
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); |