Hello community, here is the log from the commit of package purple-rocketchat for openSUSE:Factory checked in at 2019-03-10 09:37:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/purple-rocketchat (Old) and /work/SRC/openSUSE:Factory/.purple-rocketchat.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "purple-rocketchat" Sun Mar 10 09:37:09 2019 rev:4 rq:682600 version:0.0+hg20190218 Changes: -------- --- /work/SRC/openSUSE:Factory/purple-rocketchat/purple-rocketchat.changes 2019-02-27 15:06:23.954442437 +0100 +++ /work/SRC/openSUSE:Factory/.purple-rocketchat.new.28833/purple-rocketchat.changes 2019-03-10 09:37:13.604149640 +0100 @@ -1,0 +2,13 @@ +Tue Mar 5 15:19:33 UTC 2019 - sor.alexei@meowr.ru + +- Update to version 0.0+hg20190218 (changes since 0.0+hg20181203): + * Add some additional null checks to fix segfault when adding new + rocketchat server. + * librocketchat: Avoid NULL pointer assertions. + * librocketchat: Remove unneded call for group creation. + * librocketchat: Add default group configuration. + * Disconnect the account if the SSL cert was invalid. + * Fix for segfault when trying to remove an invalid username from + storage. + +------------------------------------------------------------------- Old: ---- purple-rocketchat-0.0+hg20181203.tar.xz New: ---- purple-rocketchat-0.0+hg20190218.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ purple-rocketchat.spec ++++++ --- /var/tmp/diff_new_pack.h1Crbx/_old 2019-03-10 09:37:14.088149524 +0100 +++ /var/tmp/diff_new_pack.h1Crbx/_new 2019-03-10 09:37:14.092149523 +0100 @@ -1,7 +1,7 @@ # # spec file for package purple-rocketchat # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,16 +18,13 @@ %define _name rocketchat Name: purple-rocketchat -Version: 0.0+hg20181203 +Version: 0.0+hg20190218 Release: 0 Summary: RocketChat protocol plugin for libpurple License: GPL-2.0-or-later Group: Productivity/Networking/Instant Messenger URL: https://bitbucket.org/EionRobb/purple-rocketchat Source: %{name}-%{version}.tar.xz -BuildRequires: autoconf -BuildRequires: automake -BuildRequires: libtool BuildRequires: pkgconfig BuildRequires: pkgconfig(glib-2.0) >= 2.28.0 BuildRequires: pkgconfig(json-glib-1.0) ++++++ _service ++++++ --- /var/tmp/diff_new_pack.h1Crbx/_old 2019-03-10 09:37:14.112149519 +0100 +++ /var/tmp/diff_new_pack.h1Crbx/_new 2019-03-10 09:37:14.112149519 +0100 @@ -4,7 +4,7 @@ <param name="url">https://bitbucket.org/EionRobb/purple-rocketchat</param> <param name="filename">purple-rocketchat</param> <param name="versionformat">0.0+hg{date|localdate|shortdate}</param> - <param name="revision">49c17757de34ddbb564b475150ad070d7b0ba1cc</param> + <param name="revision">cb171c8e78b92d71a738460dbc21ec4555d26f21</param> </service> <service mode="disabled" name="recompress"> <param name="file">*.tar</param> ++++++ purple-rocketchat-0.0+hg20181203.tar.xz -> purple-rocketchat-0.0+hg20190218.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/purple-rocketchat-0.0+hg20181203/librocketchat.c new/purple-rocketchat-0.0+hg20190218/librocketchat.c --- old/purple-rocketchat-0.0+hg20181203/librocketchat.c 2018-12-02 22:24:27.000000000 +0100 +++ new/purple-rocketchat-0.0+hg20190218/librocketchat.c 2019-02-18 19:17:59.000000000 +0100 @@ -136,8 +136,11 @@ #define PurpleProtocolChatEntry struct proto_chat_entry #define PurpleChatConversation PurpleConvChat #define PurpleIMConversation PurpleConvIm -#define purple_conversations_find_chat_with_account(id, account) \ - PURPLE_CONV_CHAT(purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, id, account)) +static inline PurpleConvChat * purple_conversations_find_chat_with_account(const char * name, const PurpleAccount * account) +{ + PurpleConversation * conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name, account); + return conv == NULL ? NULL : PURPLE_CONV_CHAT(conv); +} #define purple_chat_conversation_has_left purple_conv_chat_has_left #define PurpleConversationUpdateType PurpleConvUpdateType #define PURPLE_CONVERSATION_UPDATE_UNSEEN PURPLE_CONV_UPDATE_UNSEEN @@ -980,9 +983,13 @@ const gchar *topic = json_object_get_string_member(room_info, "topic"); const gchar *room_name = json_object_get_string_member(room_info, "name"); const gchar *room_id = json_object_get_string_member(room_info, "_id"); - PurpleChatConversation *chatconv = purple_conversations_find_chat_with_account(room_name, ya->account); + PurpleChatConversation *chatconv = NULL; - if (chatconv == NULL) { + if (room_name != NULL) { + purple_conversations_find_chat_with_account(room_name, ya->account); + } + + if (chatconv == NULL && room_id != NULL) { chatconv = purple_conversations_find_chat_with_account(room_id, ya->account); } @@ -992,8 +999,10 @@ g_free(html_topic); } - g_hash_table_replace(ya->group_chats, g_strdup(room_id), g_strdup(room_name)); - g_hash_table_replace(ya->group_chats_rev, g_strdup(room_name), g_strdup(room_id)); + if (room_id != NULL && room_name != NULL) { + g_hash_table_replace(ya->group_chats, g_strdup(room_id), g_strdup(room_name)); + g_hash_table_replace(ya->group_chats_rev, g_strdup(room_name), g_strdup(room_id)); + } } } } @@ -1390,7 +1399,7 @@ void rc_handle_add_new_user(RocketChatAccount *ya, JsonObject *obj); -PurpleGroup* rc_get_or_create_default_group(); +PurpleGroup* rc_get_or_create_default_group(PurpleAccount *account); static void rc_process_msg(RocketChatAccount *ya, JsonNode *element_node) @@ -1401,7 +1410,6 @@ const gchar *msg = json_object_get_string_member(obj, "msg"); // gint64 createdTime = json_object_get_int_member(obj, "createdTime"); // gboolean old_event = !ya->sync_complete; - rc_get_or_create_default_group(); if (purple_strequal(msg, "ping")) { response = json_object_new(); @@ -1596,9 +1604,9 @@ if (username != NULL) { purple_protocol_got_user_status(ya->account, username, "offline", NULL); + g_hash_table_remove(ya->usernames_to_ids, username); } - g_hash_table_remove(ya->usernames_to_ids, username); g_hash_table_remove(ya->ids_to_usernames, user_id); } @@ -1670,13 +1678,14 @@ } } -PurpleGroup* rc_get_or_create_default_group() { +PurpleGroup* rc_get_or_create_default_group(PurpleAccount *account) { PurpleGroup *rc_group = NULL; - rc_group = purple_blist_find_group(_("Rocket.Chat")); + gchar const * const group_name = purple_account_get_string(account, "default-buddy-group", _("Rocket.Chat")); + rc_group = purple_blist_find_group(group_name); if (!rc_group) { - rc_group = purple_group_new(_("Rocket.Chat")); + rc_group = purple_group_new(group_name); purple_blist_add_group(rc_group, NULL); } @@ -1685,7 +1694,7 @@ void rc_handle_add_new_user(RocketChatAccount *ya, JsonObject *obj) { PurpleAccount* account = ya->account; - PurpleGroup *defaultGroup = rc_get_or_create_default_group(); + PurpleGroup *defaultGroup = rc_get_or_create_default_group(account); // a["{"msg":"added","collection":"users","id":"hZKg86uJavE6jYLya","fields":{"emails":[{"address":"eion@robbmob.com","verified":true}],"username":"eionrobb"}}"] @@ -2420,6 +2429,11 @@ ya->websocket = NULL; ya->websocket_header_received = FALSE; + if (errortype == PURPLE_SSL_CERTIFICATE_INVALID) { + purple_connection_ssl_error(ya->pc, errortype); + return; + } + rc_restart_channel(ya); } @@ -2583,7 +2597,7 @@ //Text Sun Oct 23 00:08:23 NZDT 2016 Sun Oct 23 00:08:23 NZDT 2016 a["{"msg":"result","id":"15","result":{"total":84776,"records":["dominico","sri.sri","jacob.brush","sergey-4","joycebabu","vongomben","marina.belobrova","maialen","Guby","kawa.mj","abda","allie.micka","julien.dussart","dkonn","sasaki","hiro-21","cristian.florescu","test1-17","artkill","rocket.cat","gabba","ouaise.abdel.razig","linsk","minh.tri","shabu.ans","daniel.summers","elmor3no","woody.lee","nikoj.ne","mael.lebastard","Solange","ramin","singli","sandra.brown","touqeer.rao-CN","shoukri","lintt","wim.stalmans","john.bowles","jeff.lindesmith","div","timotz","maxime.chauvin","natalia.chalovskaya","mark.webb","demik","nshevate","Team.GrossGerau","eionrobb","danish.soomro","jeremy","testing-33","anwar.hakimi","ldk","stoccafisso","mark.petersen","yang-2","yanis.abib","alan.swan","continuouslee","aj2","rebecca.thomson","yuukan","Snare","kidatti","jader","gkarmas","treym","testDemoS","hubot","rivkah","xenithorb","greg-9","kirby","Olu1","gayle.sabharwal","dale.berger","_","systrace68","amir-3","matyee","any2names","craig.miller","aviner.fishhof","jacobroecker","kevmonzon","john.maharjan","ian-42","nazarov.aleksandr","dave-18","ddd-9","ycq818","ParineyPrinja","mongoose","tenks","thangnc","jamesbaek","BaekWoosok","onlyxool","richardt.steil","FrancescoL","eugene.ferbruarie_Mousten","bill-15","daira","stefana1","jack.terrible","joon626","novy","liyu0013","munzy","chuckbot","hogg","rolanx","lokitoxic","diogenes.alves.oliveira","test.yeah.yeah","Erikxxon","heyrob","mark.yardly","romio.montas","james.thomas","thebelgarion","art-1","ys-1","adry2k","Petersch","johannes57"]}}"] - PurpleChatConversation *chatconv = purple_conversations_find_chat_with_account(room_name, ya->account); + PurpleChatConversation *chatconv = room_name == NULL ? NULL : purple_conversations_find_chat_with_account(room_name, ya->account); if (node == NULL) { // Older server without support for getUsersOfRoom @@ -3429,6 +3443,9 @@ option = purple_account_option_bool_new(N_("Auto-add buddies to the buddy list"), "auto-add-buddy", FALSE); account_options = g_list_append(account_options, option); + option = purple_account_option_string_new(N_("Default group"), "default-buddy-group", _("Rocket.Chat")); + account_options = g_list_append(account_options, option); + option = purple_account_option_string_new(N_("Personal Access Token"), "personal_access_token", ""); account_options = g_list_append(account_options, option);