[Pidgin] #2972: Jabber protocol crashes when canceling file transfer ...

Pidgin trac at pidgin.im
Thu Sep 6 10:54:19 EDT 2007


#2972: Jabber protocol crashes when canceling file transfer ...
-----------------------+----------------------------------------------------
 Reporter:  msfbrasil  |       Type:  defect
   Status:  new        |   Priority:  minor 
Component:  libpurple  |    Version:  2.1.1 
 Keywords:             |    Pending:  0     
-----------------------+----------------------------------------------------
 Hello there!

 Despite this crash was already reported on tickets 2641 and 1804, I
 decided to open a new one because of some disagreements regarding
 conditions, the component envolved (that is the libpurple library), and
 considering that the callstack I have is more complete.

 The description of the conditions to replicate the problem presented on
 ticket 1804 is almost right, because now the crash happens only when the
 contact accepts the file transfer that was already canceled by the user.
 Rejection of the file transfer causes no more crashes.

 The callstack is not complete, because I got the crash using another
 application that uses libpurple, and is below:

 libuold.dll!jabber_si_xfer_bytestreams_send_init(_PurpleXfer *
 xfer=0x039b5178)  Line 615 + 0x1a        C
 libuold.dll!jabber_si_xfer_send_method_cb(_JabberStream * js=0x03915238,
 _xmlnode * packet=0x039834f0, void * data=0x039b5178)  Line 653 + 0x9  C
 libuold.dll!jabber_iq_parse(_JabberStream * js=0x03915238, _xmlnode *
 packet=0x039834f0)  Line 322 + 0x16       C
 libuold.dll!jabber_process_packet(_JabberStream * js=0x03915238, _xmlnode
 * packet=0x039834f0)  Line 185 + 0xd  C
 libuold.dll!jabber_parser_element_end_libxml(void * user_data=0x03915238,
 const unsigned char * element_name=0x03987ed9, const unsigned char *
 prefix=0x00000000, const unsigned char * namespace=0x03987e5b)  Line 116 +
 0xd   C

 I don't know the right place to handle this situation, but a simple test
 "if (!xfer->data) return;" on method
 "jabber_si_xfer_bytestreams_send_init" don't let the crash happen.
 I think this only test is enough considering that method
 "purple_xfer_cancel_local" should be already called when the user canceled
 the file transfer, and everything should be ok (ok = freed, release, etc)
 by now.

 Thank's and best regards!!!
 Mauro.

-- 
Ticket URL: <http://developer.pidgin.im/ticket/2972>
Pidgin <http://pidgin.im>
Pidgin


More information about the Tracker mailing list