/soc/2015/jgeboski/facebook: 2dac11959ea1: facebook: fixed impro...

James Geboski <[email protected]>
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: 2dac11959ea131605a2d28eb7efda70a72aabbba
Author:	 James Geboski <[email protected]>
Date:	 2015-06-22 16:26 -0400
Branch:	 facebook
URL: https://hg.pidgin.im/soc/2015/jgeboski/facebook/rev/2dac11959ea1

Description:

facebook: fixed improper thrift string sizes

The thrift string functions were not correctly adjusting for compact
and non-compact strings, it was just assumed as one or the other.

diffstat:

 libpurple/protocols/facebook/thrift.c |  26 +++++++++++++++++++++++---
 1 files changed, 23 insertions(+), 3 deletions(-)

diffs (54 lines):

diff --git a/libpurple/protocols/facebook/thrift.c b/libpurple/protocols/facebook/thrift.c
--- a/libpurple/protocols/facebook/thrift.c
+++ b/libpurple/protocols/facebook/thrift.c
@@ -385,14 +385,25 @@ fb_thrift_read_vi64(FbThrift *thft, guin
 gboolean
 fb_thrift_read_str(FbThrift *thft, gchar **str)
 {
-	gint32 size;
+	FbThriftPrivate *priv;
+	gboolean res;
 	guint8 *data;
+	guint32 size;
+
+	g_return_val_if_fail(FB_IS_THRIFT(thft), FALSE);
+	priv = thft->priv;
 
 	if (str != NULL) {
 		*str = NULL;
 	}
 
-	if (!fb_thrift_read_i32(thft, &size)) {
+	if (priv->flags & FB_THRIFT_FLAG_COMPACT) {
+		res = fb_thrift_read_vi32(thft, &size);
+	} else {
+		res = fb_thrift_read_i32(thft, (gint32*) &size);
+	}
+
+	if (!res) {
 		return FALSE;
 	}
 
@@ -769,12 +780,21 @@ fb_thrift_write_vi64(FbThrift *thft, gui
 void
 fb_thrift_write_str(FbThrift *thft, const gchar *str)
 {
+	FbThriftPrivate *priv;
 	guint32 size;
 
+	g_return_if_fail(FB_IS_THRIFT(thft));
 	g_return_if_fail(str != NULL);
 
+	priv = thft->priv;
 	size = strlen(str);
-	fb_thrift_write_vi32(thft, size);
+
+	if (priv->flags & FB_THRIFT_FLAG_COMPACT) {
+		fb_thrift_write_vi32(thft, size);
+	} else {
+		fb_thrift_write_i32(thft, size);
+	}
+
 	fb_thrift_write(thft, str, size);
 }
 

_______________________________________________
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.