Mercurial > pidgin
diff src/protocols/oscar/family_icbm.c @ 13664:4132d997ccec
[gaim-migrate @ 16066]
Fix Coverity CID 45: Check to make sure a channel 2 ICBM actually
contains an IP address TLV before attempting to use it. This
avoids a crash when the server sends us an abnormal channel 2
ICBM. I'm not sure if that ever happens.
Fix Coverity CID 204: Don't attempt to send data over a FLAP
BOS connection that doesn't exist. This should never happen
because the account should get disconnected first.
Fix Coverity CID 205: Don't check that a variable 'od' which
we know is valid is not equal to NULL in aim_search_address()
in family_userlookup.c
Fix Coverity CID 206: Don't check that the variable 'od' which
we know is valid is not equal to NULL in aim_chat_join() in
family_oservice.c
Fix Coverity CID 207: I neglected to remove a "return;" line from
aim_admin_setnick() in family_admin.c which caused setting your
AIM screen name formatting to not work.
Fix Coverity CID 208: Remove a duplicate call to
gaim_connection_get_account() in peer_connection_propose() in peer.c.
Fix Coverity CID 209: Remove the unused variable "username" from
incomingim_chan2() in oscar.c.
Fix Coverity CID 210: Remove the unused variable "account"
from peer_connection_listen_cb() in peer.c.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 20 Apr 2006 04:45:06 +0000 |
parents | b198d0c26b83 |
children | 6fc412e59214 |
line wrap: on
line diff
--- a/src/protocols/oscar/family_icbm.c Wed Apr 19 05:50:50 2006 +0000 +++ b/src/protocols/oscar/family_icbm.c Thu Apr 20 04:45:06 2006 +0000 @@ -1906,6 +1906,7 @@ aim_rxcallback_t userfunc; aim_tlv_t *block1, *servdatatlv; aim_tlvlist_t *list2; + aim_tlv_t *tlv; IcbmArgsCh2 args; ByteStream bbs, sdbs, *sdbsptr = NULL; guint8 *cookie2; @@ -1964,43 +1965,31 @@ * * TODO: I don't like this. Maybe just read in an int? Or inet_ntoa... */ - if (aim_tlv_gettlv(list2, 0x0002, 1)) { - aim_tlv_t *iptlv; - - iptlv = aim_tlv_gettlv(list2, 0x0002, 1); - if (iptlv->length == 4) - snprintf(proxyip, sizeof(proxyip), "%hhu.%hhu.%hhu.%hhu", - iptlv->value[0], iptlv->value[1], - iptlv->value[2], iptlv->value[3]); - } + tlv = aim_tlv_gettlv(list2, 0x0002, 1); + if ((tlv != NULL) && (tlv->length == 4)) + snprintf(proxyip, sizeof(proxyip), "%hhu.%hhu.%hhu.%hhu", + tlv->value[0], tlv->value[1], + tlv->value[2], tlv->value[3]); /* * IP address from the perspective of the client. */ - if (aim_tlv_gettlv(list2, 0x0003, 1)) { - aim_tlv_t *iptlv; - - iptlv = aim_tlv_gettlv(list2, 0x0003, 1); - if (iptlv->length == 4) - snprintf(clientip, sizeof(clientip), "%hhu.%hhu.%hhu.%hhu", - iptlv->value[0], iptlv->value[1], - iptlv->value[2], iptlv->value[3]); - } + tlv = aim_tlv_gettlv(list2, 0x0003, 1); + if ((tlv != NULL) && (tlv->length == 4)) + snprintf(clientip, sizeof(clientip), "%hhu.%hhu.%hhu.%hhu", + tlv->value[0], tlv->value[1], + tlv->value[2], tlv->value[3]); /* * Verified IP address (from the perspective of Oscar). * * This is added by the server. */ - if (aim_tlv_gettlv(list2, 0x0004, 1)) { - aim_tlv_t *iptlv; - - iptlv = aim_tlv_gettlv(list2, 0x0004, 1); - if (iptlv->length == 4) - snprintf(verifiedip, sizeof(verifiedip), "%hhu.%hhu.%hhu.%hhu", - iptlv->value[0], iptlv->value[1], - iptlv->value[2], iptlv->value[3]); - } + tlv = aim_tlv_gettlv(list2, 0x0004, 1); + if ((tlv != NULL) && (tlv->length == 4)) + snprintf(verifiedip, sizeof(verifiedip), "%hhu.%hhu.%hhu.%hhu", + tlv->value[0], tlv->value[1], + tlv->value[2], tlv->value[3]); /* * Port number for something.