summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libpurple/protocols/msn/slp.c4
-rw-r--r--libpurple/protocols/msn/slplink.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/libpurple/protocols/msn/slp.c b/libpurple/protocols/msn/slp.c
index c1a9fe9a7d..b55e48b8e1 100644
--- a/libpurple/protocols/msn/slp.c
+++ b/libpurple/protocols/msn/slp.c
@@ -397,8 +397,8 @@ got_sessionreq(MsnSlpCall *slpcall, const char *branch,
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,
diff --git a/libpurple/protocols/msn/slplink.c b/libpurple/protocols/msn/slplink.c
index 60c1308ddb..c00db15d0d 100644
--- a/libpurple/protocols/msn/slplink.c
+++ b/libpurple/protocols/msn/slplink.c
@@ -686,7 +686,7 @@ gen_context(PurpleXfer *xfer, const char *file_name, const char *file_path)
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 */