diff options
Diffstat (limited to 'facebook/facebook-json.c')
-rw-r--r-- | facebook/facebook-json.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/facebook/facebook-json.c b/facebook/facebook-json.c index 14b8588..3be7de7 100644 --- a/facebook/facebook-json.c +++ b/facebook/facebook-json.c @@ -50,6 +50,8 @@ json_value *fb_json_new(const gchar *data, gsize length, GError **err) json_value *json; json_settings js; gchar *estr; + gchar *dstr; + gchar *escaped; memset(&js, 0, sizeof js); estr = g_new0(gchar, json_error_max); @@ -60,8 +62,15 @@ json_value *fb_json_new(const gchar *data, gsize length, GError **err) return json; } + /* Ensure it's null-terminated before passing it to g_strescape() */ + dstr = g_strndup(data, MIN(length, 400)); + escaped = g_strescape(dstr, "\""); + g_set_error(err, FB_JSON_ERROR, FB_JSON_ERROR_PARSER, - "Parser: %s", estr); + "Parser: %s\nJSON len=%zd: %s", estr, length, escaped); + + g_free(dstr); + g_free(escaped); g_free(estr); return NULL; |