/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