# HG changeset patch # User Daniel Atallah # Date 1178636903 0 # Node ID 84b7a625512ed420a85fb55aca2ad9aa47a33d52 # Parent fac61b64be1e0f789f80aed59d4ba1035ca8a82e Fix #755 - Crash on disconnection due to oscar offline messaging check invalid pointer deref. diff -r fac61b64be1e -r 84b7a625512e libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Tue May 08 14:52:58 2007 +0000 +++ b/libpurple/protocols/oscar/oscar.c Tue May 08 15:08:23 2007 +0000 @@ -6463,15 +6463,18 @@ gboolean oscar_offline_message(const PurpleBuddy *buddy) { - OscarData *od; + OscarData *od = NULL; PurpleAccount *account; - PurpleConnection *gc; + PurpleConnection *gc = NULL; account = purple_buddy_get_account(buddy); - gc = purple_account_get_connection(account); - od = (OscarData *)gc->proto_data; - - return (od->icq && aim_sn_is_icq(purple_account_get_username(account))); + if (account != NULL) { + gc = purple_account_get_connection(account); + if (gc != NULL) + od = (OscarData *)gc->proto_data; + } + + return (od != NULL && od->icq && aim_sn_is_icq(purple_account_get_username(account))); } /* TODO: Find somewhere to put this instead of including it in a bunch of places.