View | Details | Raw Unified | Return to bug 62226
Collapse All | Expand All

(-)gaim-1.0.1/src/protocols/msn/slplink.c (-5 / +19 lines)
Lines 447-453 msn_slplink_process_msg(MsnSlpLink *slpl Link Here
447
		slpmsg->session_id = msg->msnslp_header.session_id;
447
		slpmsg->session_id = msg->msnslp_header.session_id;
448
		slpmsg->size = msg->msnslp_header.total_size;
448
		slpmsg->size = msg->msnslp_header.total_size;
449
		slpmsg->flags = msg->msnslp_header.flags;
449
		slpmsg->flags = msg->msnslp_header.flags;
450
		slpmsg->buffer = g_malloc(slpmsg->size);
451
450
452
		if (slpmsg->session_id)
451
		if (slpmsg->session_id)
453
		{
452
		{
Lines 471-480 msn_slplink_process_msg(MsnSlpLink *slpl Link Here
471
				}
470
				}
472
			}
471
			}
473
		}
472
		}
473
		if (!slpmsg->fp)
474
		{
475
			slpmsg->buffer = g_try_malloc(slpmsg->size);
476
			if (slpmsg->buffer == NULL)
477
			{
478
				gaim_debug_error("msn", "Failed to allocate buffer for slpmsg\n");
479
				return;
480
			}
481
		}
474
	}
482
	}
475
	else
483
	else
476
	{
484
	{
477
		slpmsg = msn_slplink_message_find(slplink, msg->msnslp_header.id);
485
		slpmsg = msn_slplink_message_find(slplink, msg->msnslp_header.session_id, msg->msnslp_header.id);
478
	}
486
	}
479
487
480
	if (slpmsg != NULL)
488
	if (slpmsg != NULL)
Lines 486-492 msn_slplink_process_msg(MsnSlpLink *slpl Link Here
486
		}
494
		}
487
		else
495
		else
488
		{
496
		{
489
			memcpy(slpmsg->buffer + offset, data, len);
497
			if ((offset + len) > slpmsg->size)
498
			{
499
				gaim_debug_error("msn", "Oversized slpmsg\n");
500
				g_return_if_reached();
501
			}
502
			else
503
				memcpy(slpmsg->buffer + offset, data, len);
490
		}
504
		}
491
	}
505
	}
492
	else
506
	else
Lines 544-550 msn_slplink_process_msg(MsnSlpLink *slpl Link Here
544
}
558
}
545
559
546
MsnSlpMessage *
560
MsnSlpMessage *
547
msn_slplink_message_find(MsnSlpLink *slplink, long id)
561
msn_slplink_message_find(MsnSlpLink *slplink, long session_id, long id)
548
{
562
{
549
	GList *e;
563
	GList *e;
550
564
Lines 552-558 msn_slplink_message_find(MsnSlpLink *slp Link Here
552
	{
566
	{
553
		MsnSlpMessage *slpmsg = e->data;
567
		MsnSlpMessage *slpmsg = e->data;
554
568
555
		if (slpmsg->id == id)
569
		if ((slpmsg->session_id == session_id) && (slpmsg->id == id))
556
			return slpmsg;
570
			return slpmsg;
557
	}
571
	}
558
572
(-)gaim-1.0.1/src/protocols/msn/slplink.h (-1 / +1 lines)
Lines 70-76 void msn_slplink_send_slpmsg(MsnSlpLink Link Here
70
void msn_slplink_unleash(MsnSlpLink *slplink);
70
void msn_slplink_unleash(MsnSlpLink *slplink);
71
void msn_slplink_send_ack(MsnSlpLink *slplink, MsnMessage *msg);
71
void msn_slplink_send_ack(MsnSlpLink *slplink, MsnMessage *msg);
72
void msn_slplink_process_msg(MsnSlpLink *slplink, MsnMessage *msg);
72
void msn_slplink_process_msg(MsnSlpLink *slplink, MsnMessage *msg);
73
MsnSlpMessage *msn_slplink_message_find(MsnSlpLink *slplink, long id);
73
MsnSlpMessage *msn_slplink_message_find(MsnSlpLink *slplink, long session_id, long id);
74
void msn_slplink_append_slp_msg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg);
74
void msn_slplink_append_slp_msg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg);
75
void msn_slplink_remove_slp_msg(MsnSlpLink *slplink,
75
void msn_slplink_remove_slp_msg(MsnSlpLink *slplink,
76
								 MsnSlpMessage *slpmsg);
76
								 MsnSlpMessage *slpmsg);

Return to bug 62226