/pidgin/main: 7f8a2f301a82: facebook-json: Ensure data is null t...

dequis <[email protected]>
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: 7f8a2f301a8220750ee9f8b29de424749fab01d4
Author:	 dequis <[email protected]>
Date:	 2015-12-21 16:31 -0500
Branch:	 default
URL: https://hg.pidgin.im/pidgin/main/rev/7f8a2f301a82

Description:

facebook-json: Ensure data is null terminated for json-glib < 1.0.2

Older json-glib versions had a bug[1] in which the length parameter was
ignored and this error happened if the input was not null-terminated:

    JSON data must be UTF-8 encoded

Since these versions are expected to still be around in some distros,
this commit makes a copy with g_strndup() to ensure that it's always
null terminated.

Thanks to advcomp2019 for reporting this bug and finding a test case
where this issue is reproducible every time (receiving events of people
joining or leaving in a groupchat)

[1]: https://bugzilla.gnome.org/show_bug.cgi?id=727755

diffstat:

 libpurple/protocols/facebook/json.c |  8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diffs (31 lines):

diff --git a/libpurple/protocols/facebook/json.c b/libpurple/protocols/facebook/json.c
--- a/libpurple/protocols/facebook/json.c
+++ b/libpurple/protocols/facebook/json.c
@@ -258,13 +258,18 @@ fb_json_bldr_add_strf(JsonBuilder *bldr,
 JsonNode *
 fb_json_node_new(const gchar *data, gssize size, GError **error)
 {
+	gchar *slice;
 	JsonNode *root;
 	JsonParser *prsr;
 
+	/* Ensure data is null terminated for json-glib < 1.0.2 */
+	slice = g_strndup(data, size);
+
 	prsr = json_parser_new();
 
-	if (!json_parser_load_from_data(prsr, data, size, error)) {
+	if (!json_parser_load_from_data(prsr, slice, size, error)) {
 		g_object_unref(prsr);
+		g_free(slice);
 		return NULL;
 	}
 
@@ -272,6 +277,7 @@ fb_json_node_new(const gchar *data, gssi
 	root = json_node_copy(root);
 
 	g_object_unref(prsr);
+	g_free(slice);
 	return root;
 }
 

_______________________________________________
Commits mailing list
[email protected]
https://pidgin.im/cgi-bin/mailman/listinfo/commits
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.