# HG changeset patch # User Mark Doliner # Date 1279909084 0 # Node ID 8e2da15b17cd996eaaa64e50adc6bf19c1ea463c # Parent bcc196eb47c2198a7867e71ea012f833aa74e0dc# Parent 901a57549910fb7312401f0143b9dbb6bfbd5eb7 propagate from branch 'im.pidgin.pidgin.mxit' (head 82e7f1b7c8af5634ca7519af59901321eab7e8dc) to branch 'im.pidgin.pidgin' (head f29f6311de2cbcfb2ad3a7bec45d9a4dc3f6a1f4) diff -r bcc196eb47c2 -r 8e2da15b17cd ChangeLog --- a/ChangeLog Tue Jul 20 13:44:56 2010 +0000 +++ b/ChangeLog Fri Jul 23 18:18:04 2010 +0000 @@ -1,6 +1,6 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul -version 2.7.2 (??/??/????): +version 2.7.3 (??/??/????): General: * Use silent build rules for automake >1.11. You can enable verbose builds with the --disable-silent-rules configure option, or using @@ -46,6 +46,18 @@ * Fix file transfers that get stuck with "Waiting for transfer to begin". +version 2.7.2 (07/21/2010): + AIM and ICQ: + * Fix a crash bug related to X-Status messages that can be triggered by + remove users. This is CVE-2010-2528. + * Fix a rare crash bug caused by certain incoming SMS messages + (discovered by Jan Kaluza--thanks Jan!). + * Change HTML sent from ICQ accounts so that official ICQ clients + hopefully display it correctly. + + MSN: + * Fix a crash related to fast buddy icon transfers. + version 2.7.1 (05/29/2010): General: * Build fixes on OpenSolaris. (Brian Lu) diff -r bcc196eb47c2 -r 8e2da15b17cd ChangeLog.API --- a/ChangeLog.API Tue Jul 20 13:44:56 2010 +0000 +++ b/ChangeLog.API Fri Jul 23 18:18:04 2010 +0000 @@ -1,12 +1,16 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul -version 2.7.2 (??/??/????): +version 2.7.3 (??/??/????): libpurple: Fixed: * purple_account_[gs]et_public_alias no longer crash when called for a protocol that doesn't support the underlying calls and the caller does not specify a failure callback. + Perl: + Added: + * Exposed log-subsystem signals. + Pidgin: Changed: * Changing the visibility (gtk_widget_hide/show) of @@ -20,6 +24,9 @@ gnt_tree_row_get_prev, gnt_tree_row_get_child and gnt_tree_row_get_parent. +version 2.7.2 (07/21/2010): + * No changes + version 2.7.1 (05/29/2010): * No changes diff -r bcc196eb47c2 -r 8e2da15b17cd ChangeLog.win32 --- a/ChangeLog.win32 Tue Jul 20 13:44:56 2010 +0000 +++ b/ChangeLog.win32 Fri Jul 23 18:18:04 2010 +0000 @@ -1,6 +1,9 @@ Starting with Pidgin version 2.7.1, this ChangeLog file will no longer be updated. It will be kept in the source tree for historical reasons only. +version 2.7.1 (05/29/2010): + * No changes + version 2.7.0 (05/12/2010): * Updated GTK+ to 2.16.6 * Private GTK+ Runtime now used (GTK+ Installer no longer supported) diff -r bcc196eb47c2 -r 8e2da15b17cd NEWS --- a/NEWS Tue Jul 20 13:44:56 2010 +0000 +++ b/NEWS Fri Jul 23 18:18:04 2010 +0000 @@ -2,6 +2,11 @@ Our development blog is available at: http://planet.pidgin.im +2.7.2 (07/21/2010): + Mark: We discovered a security issue in Pidgin 2.7.0 and 2.7.1 and + decided to release a patched version quickly. This release contains + the fix for that crash, and a few other minor fixes. + 2.7.1 (05/29/2010): Elliott: Hey, I'm first! How did that happen?! Maybe because of the interesting changes in this release. Sure there were quite a few bug @@ -12,7 +17,7 @@ previous release! This fixes a number of bugs that you've all been reporting a ton of duplicate tickets about and even gives you the new direct connection file transfer support for MSN. Enjoy! - + Marcus: Quite a bit quicker to get this release out, compared with the previous one :). Fixes a number of bugs, and I'm sure the MSN direct connections will please many users. Enjoy! diff -r bcc196eb47c2 -r 8e2da15b17cd configure.ac --- a/configure.ac Tue Jul 20 13:44:56 2010 +0000 +++ b/configure.ac Fri Jul 23 18:18:04 2010 +0000 @@ -46,7 +46,7 @@ m4_define([purple_lt_current], [7]) m4_define([purple_major_version], [2]) m4_define([purple_minor_version], [7]) -m4_define([purple_micro_version], [2]) +m4_define([purple_micro_version], [3]) m4_define([purple_version_suffix], [devel]) m4_define([purple_version], [purple_major_version.purple_minor_version.purple_micro_version]) diff -r bcc196eb47c2 -r 8e2da15b17cd libpurple/plugins/perl/common/Log.xs --- a/libpurple/plugins/perl/common/Log.xs Tue Jul 20 13:44:56 2010 +0000 +++ b/libpurple/plugins/perl/common/Log.xs Fri Jul 23 18:18:04 2010 +0000 @@ -27,6 +27,9 @@ newCONSTSUB(flags_stash, (char *)civ->name, newSViv(civ->iv)); } +Purple::Handle +purple_log_get_handle() + int purple_log_common_sizer(log) Purple::Log log diff -r bcc196eb47c2 -r 8e2da15b17cd libpurple/protocols/msn/notification.c --- a/libpurple/protocols/msn/notification.c Tue Jul 20 13:44:56 2010 +0000 +++ b/libpurple/protocols/msn/notification.c Fri Jul 23 18:18:04 2010 +0000 @@ -409,7 +409,7 @@ /* add contact to xmlnode */ static void -msn_add_contact_xml(MsnSession *session, xmlnode *mlNode,const char *passport, MsnListOp list_op, MsnNetwork networkId) +msn_add_contact_xml(xmlnode *mlNode, const char *passport, MsnListOp list_op, MsnNetwork networkId) { xmlnode *d_node,*c_node; char **tokens; @@ -543,8 +543,8 @@ adl_node = xmlnode_new("ml"); xmlnode_set_attrib(adl_node, "l", "1"); - msn_add_contact_xml(session, adl_node, passport, - user->list_op & MSN_LIST_OP_MASK, network); + msn_add_contact_xml(adl_node, passport, + user->list_op & MSN_LIST_OP_MASK, network); payload = xmlnode_to_str(adl_node, &payload_len); msn_notification_post_adl(session->notification->cmdproc, payload, payload_len); g_free(payload); @@ -600,8 +600,9 @@ } if (user->networkid != MSN_NETWORK_UNKNOWN) { - msn_add_contact_xml(session, adl_node, user->passport, - user->list_op & MSN_LIST_OP_MASK, user->networkid); + msn_add_contact_xml(adl_node, user->passport, + user->list_op & MSN_LIST_OP_MASK, + user->networkid); /* each ADL command may contain up to 150 contacts */ if (++adl_count % 150 == 0) { @@ -630,8 +631,7 @@ purple_debug_info("msn", "Adding FQY address, count is %d\n", session->adl_fqy); - msn_add_contact_xml(session, fqy_node, user->passport, - 0, user->networkid); + msn_add_contact_xml(fqy_node, user->passport, 0, user->networkid); /* each FQY command may contain up to 150 contacts, probably */ if (++fqy_count % 150 == 0) { @@ -674,6 +674,8 @@ xmlnode_free(adl_node); xmlnode_free(fqy_node); + msn_session_activate_login_timeout(session); + pc = purple_account_get_connection(session->account); display_name = purple_connection_get_display_name(pc); if (display_name @@ -1956,8 +1958,7 @@ node = xmlnode_new("ml"); node->child = NULL; - msn_add_contact_xml(session, node, passport, - addrem->list_op, network); + msn_add_contact_xml(node, passport, addrem->list_op, network); payload = xmlnode_to_str(node, &payload_len); xmlnode_free(node); @@ -1987,8 +1988,7 @@ adl_node = xmlnode_new("ml"); adl_node->child = NULL; - msn_add_contact_xml(notification->session, adl_node, user->passport, - list_op, user->networkid); + msn_add_contact_xml(adl_node, user->passport, list_op, user->networkid); payload = xmlnode_to_str(adl_node, &payload_len); xmlnode_free(adl_node); @@ -2026,8 +2026,7 @@ rml_node = xmlnode_new("ml"); rml_node->child = NULL; - msn_add_contact_xml(notification->session, rml_node, user->passport, - list_op, user->networkid); + msn_add_contact_xml(rml_node, user->passport, list_op, user->networkid); payload = xmlnode_to_str(rml_node, &payload_len); xmlnode_free(rml_node); diff -r bcc196eb47c2 -r 8e2da15b17cd libpurple/protocols/msn/session.c --- a/libpurple/protocols/msn/session.c Tue Jul 20 13:44:56 2010 +0000 +++ b/libpurple/protocols/msn/session.c Fri Jul 23 18:18:04 2010 +0000 @@ -131,6 +131,11 @@ if (!session->connected) return; + if (session->login_timeout) { + purple_timeout_remove(session->login_timeout); + session->login_timeout = 0; + } + session->connected = FALSE; while (session->switches != NULL) @@ -258,6 +263,28 @@ return swboard; } +static gboolean +msn_login_timeout_cb(gpointer data) +{ + MsnSession *session = data; + /* This forces the login process to finish, even though we haven't heard + a response for our FQY requests yet. We'll at least end up online to the + people we've already added. The rest will follow later. */ + msn_session_finish_login(session); + session->login_timeout = 0; + return FALSE; +} + +void +msn_session_activate_login_timeout(MsnSession *session) +{ + if (!session->logged_in) { + session->login_timeout = + purple_timeout_add_seconds(MSN_LOGIN_FQY_TIMEOUT, + msn_login_timeout_cb, session); + } +} + static void msn_session_sync_users(MsnSession *session) { @@ -362,6 +389,9 @@ msg = g_strdup_printf(_("Unable to authenticate: %s"), (info == NULL ) ? _("Unknown error") : info); + /* Clear the password if it isn't being saved */ + if (!purple_account_get_remember_password(session->account)) + purple_account_set_password(session->account, NULL); break; case MSN_ERROR_BAD_BLIST: reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; diff -r bcc196eb47c2 -r 8e2da15b17cd libpurple/protocols/msn/session.h --- a/libpurple/protocols/msn/session.h Tue Jul 20 13:44:56 2010 +0000 +++ b/libpurple/protocols/msn/session.h Fri Jul 23 18:18:04 2010 +0000 @@ -59,6 +59,8 @@ #define MSN_LOGIN_STEPS MSN_LOGIN_STEP_END +#define MSN_LOGIN_FQY_TIMEOUT 30 + #include "group.h" #include "httpconn.h" #include "nexus.h" @@ -83,6 +85,7 @@ gboolean connected; gboolean logged_in; /**< A temporal flag to ignore local buddy list adds. */ int adl_fqy; /**< A count of ADL/FQY so status is only changed once. */ + guint login_timeout; /**< Timeout to force status change if ADL/FQY fail. */ gboolean destroying; /**< A flag that states if the session is being destroyed. */ gboolean http_method; @@ -213,7 +216,16 @@ const char *info); /** - * Sets the current step in the login proccess. + * Starts a timeout to initiate finishing login. Sometimes the server ignores + * our FQY requests, so this forces ourselves online eventually. + * + * @param session The MSN session. + */ +void +msn_session_activate_login_timeout(MsnSession *session); + +/** + * Sets the current step in the login process. * * @param session The MSN session. * @param step The current step. diff -r bcc196eb47c2 -r 8e2da15b17cd libpurple/protocols/msn/switchboard.c --- a/libpurple/protocols/msn/switchboard.c Tue Jul 20 13:44:56 2010 +0000 +++ b/libpurple/protocols/msn/switchboard.c Fri Jul 23 18:18:04 2010 +0000 @@ -740,8 +740,13 @@ else if ((swboard->current_users > 1) || (purple_conversation_get_type(swboard->conv) == PURPLE_CONV_TYPE_CHAT)) { + GList *passport; /* This is a switchboard used for a chat */ purple_conv_chat_remove_user(PURPLE_CONV_CHAT(swboard->conv), user, NULL); + + passport = g_list_find_custom(swboard->users, user, (GCompareFunc)strcmp); + g_free(passport->data); + swboard->users = g_list_delete_link(swboard->users, passport); swboard->current_users--; if (swboard->current_users == 0) msn_switchboard_destroy(swboard); diff -r bcc196eb47c2 -r 8e2da15b17cd libpurple/protocols/oscar/family_icbm.c --- a/libpurple/protocols/oscar/family_icbm.c Tue Jul 20 13:44:56 2010 +0000 +++ b/libpurple/protocols/oscar/family_icbm.c Fri Jul 23 18:18:04 2010 +0000 @@ -249,9 +249,6 @@ } g_free(buf); - - - g_free(snac2->data); g_free(snac2); @@ -2687,7 +2684,6 @@ guint16 hdrlen; int curpos; guint16 num1, num2; - char *desc, *title, *temp; PurpleAccount *account; PurpleBuddy *buddy; PurplePresence *presence; @@ -2714,33 +2710,41 @@ xml = byte_stream_getstr(bs, bs->len - curpos); purple_debug_misc("oscar", "X-Status: Received XML reply\n"); if (xml) { - /* purple_debug_misc("oscar", "X-Status: XML reply: %s\n", xml); */ - desc = strstr(xml, "<desc>"); - if (desc != NULL) { - temp = strstr(xml, "</desc>"); - temp[0] = 0; - desc = desc + 12; + GString *xstatus; + char *tmp1, *tmp2; + + /* purple_debug_misc("oscar", "X-Status: XML reply: %s\n", xml); */ + + xstatus = g_string_new(NULL); + + tmp1 = strstr(xml, "<title>"); + if (tmp1 != NULL) { + tmp1 += 13; + tmp2 = strstr(tmp1, "</title>"); + if (tmp2 != NULL) + g_string_append_len(xstatus, tmp1, tmp2 - tmp1); } - title = strstr(xml, "<title>"); - if (title != NULL) { - temp = strstr(xml, "</title>"); - temp[0] = 0; - title = title + 13; - } else { - title = ""; + tmp1 = strstr(xml, "<desc>"); + if (tmp1 != NULL) { + tmp1 += 12; + tmp2 = strstr(tmp1, "</desc>"); + if (tmp2 != NULL) { + if (xstatus->len > 0) + g_string_append(xstatus, " - "); + g_string_append_len(xstatus, tmp1, tmp2 - tmp1); + } } - strcpy(xml,title); - if (desc) { - strcat(xml, " - "); - strcat(xml, desc); + if (xstatus->len > 0) { + purple_debug_misc("oscar", "X-Status reply: %s\n", xstatus->str); + account = purple_connection_get_account(od->gc); + buddy = purple_find_buddy(account, bn); + presence = purple_buddy_get_presence(buddy); + status = purple_presence_get_active_status(presence); + purple_prpl_got_user_status(account, bn, + purple_status_get_id(status), + "message", xstatus->str, NULL); } - purple_debug_misc("oscar", "X-Status reply: %s\n", xml); - account = purple_connection_get_account(od->gc); - buddy = purple_find_buddy(account, bn); - presence = purple_buddy_get_presence(buddy); - status = purple_presence_get_active_status(presence); - purple_prpl_got_user_status(account, bn, - purple_status_get_id(status), "message", xml, NULL); + g_string_free(xstatus, TRUE); } else { purple_debug_misc("oscar", "X-Status: Can't get XML reply string\n"); } diff -r bcc196eb47c2 -r 8e2da15b17cd libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Tue Jul 20 13:44:56 2010 +0000 +++ b/libpurple/protocols/oscar/oscar.c Fri Jul 23 18:18:04 2010 +0000 @@ -3028,12 +3028,23 @@ if (smstype != 0) break; taglen = byte_stream_getle32(&qbs); + if (taglen > 2000) { + /* Avoid trying to allocate large amounts of memory, in + case we get something unexpected. */ + break; + } tagstr = byte_stream_getstr(&qbs, taglen); if (tagstr == NULL) break; byte_stream_advance(&qbs, 3); byte_stream_advance(&qbs, 4); smslen = byte_stream_getle32(&qbs); + if (smslen > 2000) { + /* Avoid trying to allocate large amounts of memory, in + case we get something unexpected. */ + g_free(tagstr); + break; + } smsmsg = byte_stream_getstr(&qbs, smslen); /* Check if this is an SMS being sent from server */ diff -r bcc196eb47c2 -r 8e2da15b17cd libpurple/purple-url-handler --- a/libpurple/purple-url-handler Tue Jul 20 13:44:56 2010 +0000 +++ b/libpurple/purple-url-handler Fri Jul 23 18:18:04 2010 +0000 @@ -73,7 +73,8 @@ def findaccount(protocolname, accountname="", matcher=None): if matcher: for account in cpurple.PurpleAccountsGetAll(): - if accountname != "" and accountname != cpurple.PurpleAccountGetUsername(a): + if (protocolname != cpurple.PurpleAccountGetProtocolID(account)) or \ + (accountname != "" and accountname != cpurple.PurpleAccountGetUsername(account)): continue if matcher(account): bring_account_online(account) @@ -182,7 +183,7 @@ def irc(uri): protocol = "prpl-irc" - match = re.match(r"^irc:(//([^/]*)/)?([^?]*)(\?(.*))?", uri) + match = re.match(r"^irc:(//([^/]*))?/?([^?]*)(\?(.*))?", uri) if not match: print "Invalid irc URI: %s" % uri return @@ -207,7 +208,7 @@ def correct_server(account): username = cpurple.PurpleAccountGetUsername(account) - return ("@" in username) and (server == (username.split("@"))[1]) + return ((server == "") or ("@" in username) and (server == (username.split("@"))[1])) account = findaccount(protocol, matcher=correct_server) diff -r bcc196eb47c2 -r 8e2da15b17cd po/ChangeLog --- a/po/ChangeLog Tue Jul 20 13:44:56 2010 +0000 +++ b/po/ChangeLog Fri Jul 23 18:18:04 2010 +0000 @@ -1,5 +1,8 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul +version 2.7.2 + * No changes + version 2.7.1 * Chinese (Hong Kong) translation updated (Ambrose C. Li, Paladin R. Liu) diff -r bcc196eb47c2 -r 8e2da15b17cd po/de.po --- a/po/de.po Tue Jul 20 13:44:56 2010 +0000 +++ b/po/de.po Fri Jul 23 18:18:04 2010 +0000 @@ -11,14 +11,14 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-30 23:15-0400\n" -"PO-Revision-Date: 2010-05-29 17:30+0200\n" +"POT-Creation-Date: 2010-07-20 19:00+0200\n" +"PO-Revision-Date: 2010-07-20 18:52+0200\n" "Last-Translator: Björn Voigt \n" "Language-Team: Deutsch \n" -"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators may want to transliterate the name. @@ -65,12 +65,27 @@ msgid "Error" msgstr "Fehler" +msgid "Account was not modified" +msgstr "Konto wurde nicht modifiziert" + msgid "Account was not added" msgstr "Konto wurde nicht hinzugefügt" msgid "Username of an account must be non-empty." msgstr "Benutzername eines Kontos darf nicht leer sein." +msgid "" +"The account's protocol cannot be changed while it is connected to the server." +msgstr "" +"Das Protokoll des Kontos kann nicht geändert werden solange das Konto mit " +"dem Server verbunden ist." + +msgid "" +"The account's username cannot be changed while it is connected to the server." +msgstr "" +"Der Benutzername des Kontos kann nicht geändert werden solange das Konto mit " +"dem Server verbunden ist." + msgid "New mail notifications" msgstr "Benachrichtigung über neue Mails" @@ -1269,6 +1284,9 @@ msgid "Someone says your username in chat" msgstr "Jemand nennt Ihren Benutzernamen im Chat" +msgid "Attention received" +msgstr "Aufmerksamkeitsgesuch erhalten" + msgid "GStreamer Failure" msgstr "GStreamer-Fehler" @@ -1685,8 +1703,12 @@ "Diesem Zertifikat wird nicht vertraut, da kein Zertifikat bestätigen kann, " "dass ihm aktuell vertraut wird." -msgid "The certificate is not valid yet." -msgstr "Das Zertifikat ist noch nicht gültig." +msgid "" +"The certificate is not valid yet. Check that your computer's date and time " +"are accurate." +msgstr "" +"Das Zertifikat ist nicht mehr gültig. Überprüfen Sie, ob Datum und Zeit " +"Ihres Computers stimmen." msgid "The certificate has expired and should not be considered valid." msgstr "" @@ -3857,6 +3879,19 @@ "Der Server ist der Meinung, dass die Authentifizierung vollständig ist, der " "Client aber nicht" +msgid "Server may require plaintext authentication over an unencrypted stream" +msgstr "" +"Der Server könnte eine Klartext-Authentifizierung über einen " +"unverschlüsselten Kanal anfordern" + +#, c-format +msgid "" +"%s may require plaintext authentication over an unencrypted connection. " +"Allow this and continue authentication?" +msgstr "" +"%s könnte eine Klartext-Authentifizierung über einen unverschlüsselten Kanal " +"anfordern. Wollen Sie dies erlauben und mit der Authentifikation fortfahren?" + msgid "SASL authentication failed" msgstr "SASL-Authentifizierung fehlgeschlagen" @@ -6175,17 +6210,14 @@ msgstr "Startbildschirm-Popup aktivieren" #. you were kicked -#, fuzzy msgid "You have been kicked from this MultiMX." -msgstr "Sie wurden hinausgeworfen: (%s)" - -#, fuzzy +msgstr "Sie wurden von MultiMX hinausgeworfen." + msgid "was kicked" -msgstr "Falsches Ticket" - -#, fuzzy +msgstr "wurde hinausgeworfen" + msgid "_Room Name:" -msgstr "_Raum:" +msgstr "_Raumname:" #. we must have lost the connection, so terminate it so that we can reconnect msgid "We have lost the connection to MXit. Please reconnect." @@ -6767,8 +6799,8 @@ #, c-format msgid "Unable to send message. Could not get details for user (%s)." msgstr "" -"Kann die Nachricht nicht senden. Kann die Details vom Benutzer nicht holen " -"(%s)." +"Kann die Nachricht nicht senden. Kann die Details vom Benutzer nicht holen (%" +"s)." #, c-format msgid "Unable to add %s to your buddy list (%s)." @@ -6786,8 +6818,8 @@ #, c-format msgid "Unable to send message to %s. Could not create the conference (%s)." msgstr "" -"Kann die Nachricht nicht an %s senden. Kann die Konferenz nicht erstellen " -"(%s)." +"Kann die Nachricht nicht an %s senden. Kann die Konferenz nicht erstellen (%" +"s)." #, c-format msgid "Unable to send message. Could not create the conference (%s)." @@ -7200,8 +7232,8 @@ "(There was an error receiving this message. Either you and %s have " "different encodings selected, or %s has a buggy client.)" msgstr "" -"(Es gab einen Fehler beim Empfang dieser Nachricht. Entweder haben Sie und " -"%s unterschiedliche Kodierungen gesetzt oder %s hat einen fehlerhaften " +"(Es gab einen Fehler beim Empfang dieser Nachricht. Entweder haben Sie und %" +"s unterschiedliche Kodierungen gesetzt oder %s hat einen fehlerhaften " "Client.)" #. Label @@ -7512,10 +7544,10 @@ msgid_plural "" "You missed %hu messages from %s because the rate limit has been exceeded." msgstr[0] "" -"Sie haben %hu Nachricht von %s nicht erhalten, da die Senderate " +"Sie haben %hu Nachricht von %s nicht erhalten, da die Datenrate " "überschritten wurde." msgstr[1] "" -"Sie haben %hu Nachrichten von %s nicht erhalten, da die Senderate " +"Sie haben %hu Nachrichten von %s nicht erhalten, da die Datenrate " "überschritten wurde." #, c-format @@ -7989,11 +8021,11 @@ msgid "Invalid SNAC" msgstr "Ungültiger SNAC" -msgid "Rate to host" -msgstr "Bewertung zum Host" - -msgid "Rate to client" -msgstr "Bewertung zum Client" +msgid "Server rate limit exceeded" +msgstr "Server-Datenrate überschritten" + +msgid "Client rate limit exceeded" +msgstr "Client-Datenrate überschritten" msgid "Service unavailable" msgstr "Dienst nicht verfügbar" @@ -8428,8 +8460,8 @@ #, c-format msgid "Joining Qun %u is approved by admin %u for %s" msgstr "" -"Das Betreten des Qun %u wurde vom Admin bestätigt wegen by admin %u for " -"%s" +"Das Betreten des Qun %u wurde vom Admin bestätigt wegen by admin %u for %" +"s" #, c-format msgid "Removed buddy %u." @@ -10283,8 +10315,8 @@ msgid "Ignore conference and chatroom invitations" msgstr "Konferenz- und Chateinladungen ignorieren" -msgid "Use account proxy for SSL connections" -msgstr "Proxy-Zugang für SSL-Verbindungen benutzen" +msgid "Use account proxy for HTTP and HTTPS connections" +msgstr "Proxy-Zugang für HTTP- und HTTPS-Verbindungen benutzen" msgid "Chat room list URL" msgstr "Chatraumliste (URL)" @@ -12501,8 +12533,8 @@ "to multiple messaging services at once. %s is written in C using GTK+. %s " "is released, and may be modified and redistributed, under the terms of the " "GPL version 2 (or later). A copy of the GPL is distributed with %s. %s is " -"copyrighted by its contributors, a list of whom is also distributed with " -"%s. There is no warranty for %s.

" +"copyrighted by its contributors, a list of whom is also distributed with %" +"s. There is no warranty for %s.

" msgstr "" "%s ist ein Nachrichtendienst, basierend auf libpurple, der die Verbindung zu " "mehreren Nachrichtendiensten gleichzeitig unterstützt. %s wird in C " @@ -13074,16 +13106,16 @@ #, c-format msgid "" -"Are you sure you want to permanently delete the log of the conversation in " -"%s which started at %s?" +"Are you sure you want to permanently delete the log of the conversation in %" +"s which started at %s?" msgstr "" "Wollen Sie wirklich den Mitschnitt der Unterhaltung in %s, gestartet am %s, " "permanent löschen?" #, c-format msgid "" -"Are you sure you want to permanently delete the system log which started at " -"%s?" +"Are you sure you want to permanently delete the system log which started at %" +"s?" msgstr "" "Wollen Sie wirklich den Systemmitschnitt, gestartet am %s, permanent löschen?" @@ -14003,9 +14035,6 @@ msgid "Custom Smiley Manager" msgstr "Verwaltung für benutzerdefinierte Smileys" -msgid "Attention received" -msgstr "Aufmerksamkeitsgesuch erhalten" - msgid "Select Buddy Icon" msgstr "Buddy-Icon auswählen" @@ -15429,13 +15458,13 @@ #, no-c-format msgid "" "Error Installing Spellchecking ($R3).$\\rIf retrying fails, manual " -"installation instructions are at: http://developer.pidgin.im/wiki/Installing" -"%20Pidgin#manual_win32_spellcheck_installation" +"installation instructions are at: http://developer.pidgin.im/wiki/Installing%" +"20Pidgin#manual_win32_spellcheck_installation" msgstr "" "Fehler beim Installieren der Rechtschreibkontrolle ($R3).$\\rFalls ein " "erneuter Versuch fehlschlägt, finden Sie Anweisungen zur manuellen " -"Installation unter: http://developer.pidgin.im/wiki/Installing" -"%20Pidgin#manual_win32_spellcheck_installation" +"Installation unter: http://developer.pidgin.im/wiki/Installing%" +"20Pidgin#manual_win32_spellcheck_installation" #. Installer Subsection Text msgid "GTK+ Runtime (required if not present)" @@ -15515,6 +15544,15 @@ msgid "You do not have permission to uninstall this application." msgstr "Sie haben keine Berechtigung, diese Anwendung zu deinstallieren." +#~ msgid "The certificate is not valid yet." +#~ msgstr "Das Zertifikat ist noch nicht gültig." + +#~ msgid "Rate to host" +#~ msgstr "Bewertung zum Host" + +#~ msgid "Rate to client" +#~ msgstr "Bewertung zum Client" + #~ msgid "Unknown reason." #~ msgstr "Unbekannter Grund."