Mercurial > pidgin
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; } /**