Mercurial > pidgin.yaz
changeset 29893:f8a95fdab3bd
Fix FT context header length handling. The official client only seems to
care about this value if the version is 3.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sun, 28 Feb 2010 04:06:46 +0000 |
parents | 1a9977557dc9 |
children | a0adf0bb19b7 6d3a90b49dba |
files | libpurple/protocols/msn/slp.c libpurple/protocols/msn/slplink.c |
diffstat | 2 files changed, 3 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/msn/slp.c Sun Feb 28 02:11:57 2010 +0000 +++ b/libpurple/protocols/msn/slp.c Sun Feb 28 04:06:46 2010 +0000 @@ -397,8 +397,8 @@ header = (MsnFileContext *)purple_base64_decode(context, &bin_len); if (bin_len >= sizeof(MsnFileContext) - 1 && - header->length == sizeof(MsnFileContext) - 1 && - header->version == 2) { + (header->version == 2 || + (header->version == 3 && header->length == sizeof(MsnFileContext) + 63))) { file_size = GUINT64_FROM_LE(header->file_size); file_name = g_convert((const gchar *)&header->file_name,
--- a/libpurple/protocols/msn/slplink.c Sun Feb 28 02:11:57 2010 +0000 +++ b/libpurple/protocols/msn/slplink.c Sun Feb 28 04:06:46 2010 +0000 @@ -686,7 +686,7 @@ u8 = NULL; } - header.length = GUINT32_TO_LE(sizeof(MsnFileContext)); + header.length = GUINT32_TO_LE(sizeof(MsnFileContext) - 1); header.version = GUINT32_TO_LE(2); /* V.3 contains additional unnecessary data */ header.file_size = GUINT64_TO_LE(size); header.type = GUINT32_TO_LE(1); /* No file preview */