diff options
-rw-r--r-- | libpurple/protocols/msn/slp.c | 4 | ||||
-rw-r--r-- | libpurple/protocols/msn/slplink.c | 2 |
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 */ |