Mercurial > pidgin
diff libfaim/aim_rxhandlers.c @ 715:58106806ac2b
[gaim-migrate @ 725]
yay
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Fri, 18 Aug 2000 00:21:53 +0000 |
parents | 6e318907bcce |
children | 58a6e6e26695 |
line wrap: on
line diff
--- a/libfaim/aim_rxhandlers.c Thu Aug 17 23:23:24 2000 +0000 +++ b/libfaim/aim_rxhandlers.c Fri Aug 18 00:21:53 2000 +0000 @@ -639,7 +639,6 @@ int aim_parse_ratechange_middle(struct aim_session_t *sess, struct command_rx_struct *command) { rxcallback_t userfunc = NULL; - int i = 10; /* skip SNAC */ int ret = 1; unsigned long newrate; @@ -673,18 +672,22 @@ /* * TLVs follow */ - tlvlist = aim_readtlvchain(command->data+12, command->commandlen-12); - - msg = aim_gettlv_str(tlvlist, 0x000b, 1); + if (!(tlvlist = aim_readtlvchain(command->data+12, command->commandlen-12))) + return ret; + + if (!(msg = aim_gettlv_str(tlvlist, 0x000b, 1))) { + aim_freetlvchain(&tlvlist); + return ret; + } userfunc = aim_callhandler(command->conn, 0x0001, 0x0013); if (userfunc) ret = userfunc(sess, command, id, msg); aim_freetlvchain(&tlvlist); + free(msg); - return ret; - + return ret; } int aim_handleredirect_middle(struct aim_session_t *sess, @@ -715,6 +718,7 @@ if (!(ip = aim_gettlv_str(tlvlist, 0x0005, 1))) { printf("libfaim: major bug: no IP in tlvchain from redirect (service 0x%02x)\n", serviceid); + free(ip); aim_freetlvchain(&tlvlist); return ret; } @@ -722,6 +726,7 @@ if (!(tmptlv = aim_gettlv(tlvlist, 0x0006, 1))) { printf("libfaim: major bug: no cookie in tlvchain from redirect (service 0x%02x)\n", serviceid); + free(ip); aim_freetlvchain(&tlvlist); return ret; } @@ -746,9 +751,7 @@ ret = userfunc(sess, command, serviceid, ip, cookie); } - /* - * XXX: Is there a leak here? Where does IP get freed? - */ + free(ip); aim_freetlvchain(&tlvlist); return ret;