diff options
author | dequis <dx@dxzone.com.ar> | 2015-03-15 09:31:45 -0300 |
---|---|---|
committer | dequis <dx@dxzone.com.ar> | 2015-03-15 09:31:45 -0300 |
commit | cf3e226c124028e19987c29ea882038fc449f9d4 (patch) | |
tree | 6ab1eefae906b69a67130611edc95e1b3e847788 | |
parent | dde635c0577d65324ad2f98f92a8473f1e956af5 (diff) | |
download | bitlbee-facebook-cf3e226c124028e19987c29ea882038fc449f9d4.tar.gz bitlbee-facebook-cf3e226c124028e19987c29ea882038fc449f9d4.tar.bz2 bitlbee-facebook-cf3e226c124028e19987c29ea882038fc449f9d4.tar.xz |
facebook-json: On parse error, show an escaped fragment of the input
Just for debugging purposes with users who don't run this with debug
enabled.
-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; |