libpurple/protocols/msn/slplink.c

branch
cpw.qulogic.msnp16
changeset 30900
a2da95fb9cff
parent 29461
3fde79389ce3
parent 29376
9a3f73531905
child 30907
418280321ba7
--- a/libpurple/protocols/msn/slplink.c	Tue Feb 16 15:58:34 2010 +0000
+++ b/libpurple/protocols/msn/slplink.c	Thu Feb 18 16:59:04 2010 +0000
@@ -584,15 +584,16 @@
 	}
 	else if (slpmsg->size && slpmsg->buffer)
 	{
-		if (G_MAXSIZE - len < offset || (offset + len) > slpmsg->size)
+		if (G_MAXSIZE - len < offset || (offset + len) > slpmsg->size || slpmsg->offset != offset)
 		{
 			purple_debug_error("msn",
 				"Oversized slpmsg - msgsize=%lld offset=%" G_GUINT64_FORMAT " len=%" G_GSIZE_FORMAT "\n",
 				slpmsg->size, offset, len);
 			g_return_if_reached();
+		} else {
+			memcpy(slpmsg->buffer + offset, data, len);
+			slpmsg->offset += len;
 		}
-		else
-			memcpy(slpmsg->buffer + offset, data, len);
 	}
 
 	if ((slpmsg->flags == 0x20 ||

mercurial