# HG changeset patch # User Mark Doliner # Date 1268901002 0 # Node ID a7875e67ad9c81f8308e49fae4c73d8fec3e1444 # Parent 855620e59e0e6b2b37d08ede4a85b684d05485f3 Don't try to convert the message in incoming auth requests. The oscar protocol documentation that used to be posted on AOL's web site stated that, "All strings in Feedbag are UTF8 encoded." Looks like the current conversion code was added in revision a59a61f8b5d0874acb16f9ca8e57a074cf037eca I believe this fixes #7457 diff -r 855620e59e0e -r a7875e67ad9c libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Thu Mar 18 08:08:43 2010 +0000 +++ b/libpurple/protocols/oscar/oscar.c Thu Mar 18 08:30:02 2010 +0000 @@ -5807,28 +5807,34 @@ return 1; } -static int purple_ssi_authrequest(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) { +static int purple_ssi_authrequest(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) +{ PurpleConnection *gc = od->gc; va_list ap; - char *bn; - char *msg; + const char *bn; + const char *msg; PurpleAccount *account = purple_connection_get_account(gc); - gchar *reason = NULL; struct name_data *data; PurpleBuddy *buddy; va_start(ap, fr); - bn = va_arg(ap, char *); - msg = va_arg(ap, char *); + bn = va_arg(ap, const char *); + msg = va_arg(ap, const char *); va_end(ap); purple_debug_info("oscar", - "ssi: received authorization request from %s\n", bn); + "ssi: received authorization request from %s\n", bn); buddy = purple_find_buddy(account, bn); - if (msg != NULL) - reason = purple_plugin_oscar_decode_im_part(account, bn, AIM_CHARSET_LATIN_1, 0x0000, msg, strlen(msg)); + if (!msg) { + purple_debug_warning("oscar", "Received auth request from %s with " + "empty message\n", bn); + } else if (!g_utf8_validate(msg, -1, NULL)) { + purple_debug_warning("oscar", "Received auth request from %s with " + "invalid UTF-8 message\n", bn); + msg = NULL; + } data = g_new(struct name_data, 1); data->gc = gc; @@ -5837,9 +5843,8 @@ purple_account_request_authorization(account, bn, NULL, (buddy ? purple_buddy_get_alias_only(buddy) : NULL), - reason, buddy != NULL, purple_auth_grant, + msg, buddy != NULL, purple_auth_grant, purple_auth_dontgrant_msgprompt, data); - g_free(reason); return 1; }