changeset 31072:9b55bc3e2640

oscar: Fix a leak in aim_tlvlist_add_caps ==32109== 384 bytes in 2 blocks are definitely lost in loss record 17,065 of 18,342 ==32109== at 0x4C244E8: malloc (vg_replace_malloc.c:236) ==32109== by 0x90D8534: g_malloc (gmem.c:132) ==32109== by 0x1613A4F0: byte_stream_new (bstream.c:32) ==32109== by 0x1615DF63: aim_tlvlist_add_caps (tlv.c:413) ==32109== by 0x16144FE6: aim_locate_setcaps (family_locate.c:1361) ==32109== by 0x16154CA2: purple_parse_locaterights (oscar.c:2806) ==32109== by 0x1614632B: snachandler (family_locate.c:1251) ==32109== by 0x1614B4D2: flap_connection_recv (flap_connection.c:776)
author Paul Aurich <paul@darkrain42.org>
date Tue, 28 Dec 2010 05:57:57 +0000
parents 0c0b94fb9ac7
children 01a8f82edc45
files libpurple/protocols/oscar/tlv.c
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/protocols/oscar/tlv.c	Tue Dec 28 05:54:04 2010 +0000
+++ b/libpurple/protocols/oscar/tlv.c	Tue Dec 28 05:57:57 2010 +0000
@@ -400,6 +400,7 @@
  */
 int aim_tlvlist_add_caps(GSList **list, const guint16 type, const guint64 caps, const char *mood)
 {
+	int len;
 	ByteStream bs;
 	guint32 bs_size;
 	guint8 *data;
@@ -417,7 +418,11 @@
 	if (data != NULL)
 		byte_stream_putraw(&bs, data, 16);
 
-	return aim_tlvlist_add_raw(list, type, byte_stream_curpos(&bs), bs.data);
+	len = aim_tlvlist_add_raw(list, type, byte_stream_curpos(&bs), bs.data);
+
+	byte_stream_destroy(&bs);
+
+	return len;
 }
 
 /**