besser82 / rpms / pidgin

Forked from rpms/pidgin 6 years ago
Clone
f82e1aa
-----------------------------------------------------------------
f82e1aa
Revision: e3dd36706068f3b8eabd630ff71d270c145cce42
f82e1aa
Ancestor: 6c2368ad4315c5277c41916c2be642f8aa1894e2
f82e1aa
Author: markdoliner@pidgin.im
f82e1aa
Date: 05/20/2010 02:39:25 AM
f82e1aa
Branch: im.pidgin.pidgin
f82e1aa
f82e1aa
Modified files:
f82e1aa
        libpurple/protocols/oscar/family_icbm.c
f82e1aa
f82e1aa
ChangeLog: 
f82e1aa
f82e1aa
If we get an error SNAC on the ICBM family and it's missing buddy name then
f82e1aa
don't fallthrough to the default error handler in misc.c.  This was causing
f82e1aa
purple_parse_msgerr() in oscar.c to get called with different va_args than
f82e1aa
it was expecting, which caused a crash.  Specifically when trying to fetch
f82e1aa
the ICQ x-status of an offline buddy.
f82e1aa
f82e1aa
Fixes #11863.  This is nosnilmot's patch, I believe.  I had no part in it,
f82e1aa
other than verifying that I do believe it'll fix the crash.
f82e1aa
f82e1aa
============================================================
f82e1aa
--- libpurple/protocols/oscar/family_icbm.c	fcbebddf7bb56d37e2e89ffa10da1b73e63cf833
f82e1aa
+++ libpurple/protocols/oscar/family_icbm.c	62126e23e6971a85d9b599c7ca61675a008e6f9b
f82e1aa
@@ -166,20 +166,20 @@ error(OscarData *od, FlapConnection *con
f82e1aa
 
f82e1aa
 	if (!(snac2 = aim_remsnac(od, snac->id))) {
f82e1aa
 		purple_debug_misc("oscar", "icbm error: received response from unknown request!\n");
f82e1aa
-		return 0;
f82e1aa
+		return 1;
f82e1aa
 	}
f82e1aa
 
f82e1aa
 	if (snac2->family != SNAC_FAMILY_ICBM) {
f82e1aa
 		purple_debug_misc("oscar", "icbm error: received response from invalid request! %d\n", snac2->family);
f82e1aa
 		g_free(snac2->data);
f82e1aa
 		g_free(snac2);
f82e1aa
-		return 0;
f82e1aa
+		return 1;
f82e1aa
 	}
f82e1aa
 
f82e1aa
 	if (!(bn = snac2->data)) {
f82e1aa
 		purple_debug_misc("oscar", "icbm error: received response from request without a buddy name!\n");
f82e1aa
 		g_free(snac2);
f82e1aa
-		return 0;
f82e1aa
+		return 1;
f82e1aa
 	}
f82e1aa
 
f82e1aa
 	reason = byte_stream_get16(bs);