# HG changeset patch # User Mark Doliner <mark@kingant.net> # Date 1274319565 0 # Node ID 6d96bfe048bc0b6ece426ecdae27e7ea8623588c # Parent 7ba6fc1762dc16cbc4fe41dcf35f7a940721f79a If we get an error SNAC on the ICBM family and it's missing buddy name then don't fallthrough to the default error handler in misc.c. This was causing purple_parse_msgerr() in oscar.c to get called with different va_args than it was expecting, which caused a crash. Specifically when trying to fetch the ICQ x-status of an offline buddy. Fixes #11863. This is nosnilmot's patch, I believe. I had no part in it, other than verifying that I do believe it'll fix the crash. diff -r 7ba6fc1762dc -r 6d96bfe048bc libpurple/protocols/oscar/family_icbm.c --- a/libpurple/protocols/oscar/family_icbm.c Thu May 20 01:27:23 2010 +0000 +++ b/libpurple/protocols/oscar/family_icbm.c Thu May 20 01:39:25 2010 +0000 @@ -166,20 +166,20 @@ if (!(snac2 = aim_remsnac(od, snac->id))) { purple_debug_misc("oscar", "icbm error: received response from unknown request!\n"); - return 0; + return 1; } if (snac2->family != SNAC_FAMILY_ICBM) { purple_debug_misc("oscar", "icbm error: received response from invalid request! %d\n", snac2->family); g_free(snac2->data); g_free(snac2); - return 0; + return 1; } if (!(bn = snac2->data)) { purple_debug_misc("oscar", "icbm error: received response from request without a buddy name!\n"); g_free(snac2); - return 0; + return 1; } reason = byte_stream_get16(bs);