# HG changeset patch # User Daniel Atallah # Date 1200353392 0 # Node ID 603d5325af4c3db05c8eeb4e44cee05385c1c019 # Parent d8cc610bd388f6e600466d55c2bc472b022d724a Prevent a crash caused by freed memory being accessed. diff -r d8cc610bd388 -r 603d5325af4c libpurple/protocols/bonjour/jabber.c --- a/libpurple/protocols/bonjour/jabber.c Mon Jan 14 22:23:54 2008 +0000 +++ b/libpurple/protocols/bonjour/jabber.c Mon Jan 14 23:29:52 2008 +0000 @@ -995,7 +995,7 @@ bb->conversation = NULL; } - purple_timeout_add(0, _async_bonjour_jabber_close_conversation_cb, bconv); + bconv->close_timeout = purple_timeout_add(0, _async_bonjour_jabber_close_conversation_cb, bconv); } void @@ -1054,6 +1054,9 @@ if (bconv->context != NULL) bonjour_parser_setup(bconv); + if (bconv->close_timeout != 0) + purple_timeout_remove(bconv->close_timeout); + g_free(bconv->buddy_name); g_free(bconv->ip); g_free(bconv); diff -r d8cc610bd388 -r 603d5325af4c libpurple/protocols/bonjour/jabber.h --- a/libpurple/protocols/bonjour/jabber.h Mon Jan 14 22:23:54 2008 +0000 +++ b/libpurple/protocols/bonjour/jabber.h Mon Jan 14 23:29:52 2008 +0000 @@ -47,6 +47,7 @@ gint socket; guint rx_handler; guint tx_handler; + guint close_timeout; PurpleCircBuffer *tx_buf; int sent_stream_start; /* 0 = Unsent, 1 = Partial, 2 = Complete */ gboolean recv_stream_start;