aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordequis <dx@dxzone.com.ar>2015-03-15 09:31:45 -0300
committerdequis <dx@dxzone.com.ar>2015-03-15 09:31:45 -0300
commitcf3e226c124028e19987c29ea882038fc449f9d4 (patch)
tree6ab1eefae906b69a67130611edc95e1b3e847788
parentdde635c0577d65324ad2f98f92a8473f1e956af5 (diff)
downloadbitlbee-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.c11
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;