Hello community, here is the log from the commit of package evolution-data-server for openSUSE:Factory checked in at 2018-02-07 18:38:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/evolution-data-server (Old) and /work/SRC/openSUSE:Factory/.evolution-data-server.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "evolution-data-server" Wed Feb 7 18:38:34 2018 rev:183 rq:573056 version:3.26.5 Changes: -------- --- /work/SRC/openSUSE:Factory/evolution-data-server/evolution-data-server.changes 2018-01-16 09:28:45.475910425 +0100 +++ /work/SRC/openSUSE:Factory/.evolution-data-server.new/evolution-data-server.changes 2018-02-07 18:38:35.676104962 +0100 @@ -1,0 +2,13 @@ +Mon Feb 5 13:17:05 UTC 2018 - bjorn.lie@gmail.com + +- Update to version 3.26.5: + + Prevent early free of an ESource when it has pending + operations. + + IMAPx: + - Select destination mailbox only when permanentflags not known + yet. + - Sort array of UIDs before syncing changes to the server. + + Prevent passing NULL ldap handle into LDAP functions ][. + + Bugs fixed: bgo#792513, bgo#789522. + +------------------------------------------------------------------- Old: ---- evolution-data-server-3.26.4.tar.xz New: ---- evolution-data-server-3.26.5.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ evolution-data-server.spec ++++++ --- /var/tmp/diff_new_pack.PZTy2g/_old 2018-02-07 18:38:36.452068610 +0100 +++ /var/tmp/diff_new_pack.PZTy2g/_new 2018-02-07 18:38:36.452068610 +0100 @@ -32,7 +32,7 @@ Name: evolution-data-server %define _evo_version 3.26 -Version: 3.26.4 +Version: 3.26.5 Release: 0 Summary: Evolution Data Server License: LGPL-2.1+ ++++++ evolution-data-server-3.26.4.tar.xz -> evolution-data-server-3.26.5.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.26.4/CMakeLists.txt new/evolution-data-server-3.26.5/CMakeLists.txt --- old/evolution-data-server-3.26.4/CMakeLists.txt 2018-01-08 11:05:37.000000000 +0100 +++ new/evolution-data-server-3.26.5/CMakeLists.txt 2018-02-05 11:57:20.000000000 +0100 @@ -4,7 +4,7 @@ cmake_policy(VERSION 3.1) project(evolution-data-server - VERSION 3.26.4 + VERSION 3.26.5 LANGUAGES C CXX) set(PROJECT_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution-Data-Server") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.26.4/NEWS new/evolution-data-server-3.26.5/NEWS --- old/evolution-data-server-3.26.4/NEWS 2018-01-08 11:05:37.000000000 +0100 +++ new/evolution-data-server-3.26.5/NEWS 2018-02-05 11:57:20.000000000 +0100 @@ -1,3 +1,16 @@ +Evolution-Data-Server 3.26.5 2018-02-05 +--------------------------------------- + +Bug Fixes: + Bug 792513 - [IMAPx] Deadlock after deleting messages (with real Trash) (Milan Crha) + Bug 789522 - Decode of empty base64 encoded part causes runtime warnings (Milan Crha) + +Miscellaneous: + Prevent early free of an ESource when it has pending operations (Milan Crha) + [IMAPx] Select destination mailbox only when permanentflags not known yet (Milan Crha) + Prevent passing NULL ldap handle into LDAP functions ][ (Milan Crha) + [IMAPx] Sort array of UIDs before syncing changes to the server (Milan Crha) + Evolution-Data-Server 3.26.4 2018-01-08 --------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.26.4/src/addressbook/backends/ldap/e-book-backend-ldap.c new/evolution-data-server-3.26.5/src/addressbook/backends/ldap/e-book-backend-ldap.c --- old/evolution-data-server-3.26.4/src/addressbook/backends/ldap/e-book-backend-ldap.c 2018-01-08 11:05:37.000000000 +0100 +++ new/evolution-data-server-3.26.5/src/addressbook/backends/ldap/e-book-backend-ldap.c 2018-02-05 11:57:20.000000000 +0100 @@ -3989,8 +3989,8 @@ ldap_memfree (dn); if (ldap_uid) *ldap_uid = NULL; - for (attr = ldap_first_attribute (bl->priv->ldap, e, &ber); attr; - attr = ldap_next_attribute (bl->priv->ldap, e, ber)) { + for (attr = ldap_first_attribute (bl->priv->ldap, e, &ber); attr && bl->priv->ldap; + attr = bl->priv->ldap ? ldap_next_attribute (bl->priv->ldap, e, ber) : NULL) { gint i; struct prop_info *info = NULL; gchar **values; @@ -4032,7 +4032,6 @@ if (info) { if (info->prop_type & PROP_WRITE_ONLY) { - g_rec_mutex_lock (&eds_ldap_handler_lock); continue; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.26.4/src/camel/camel-mime-filter-basic.c new/evolution-data-server-3.26.5/src/camel/camel-mime-filter-basic.c --- old/evolution-data-server-3.26.4/src/camel/camel-mime-filter-basic.c 2018-01-08 11:05:37.000000000 +0100 +++ new/evolution-data-server-3.26.5/src/camel/camel-mime-filter-basic.c 2018-02-05 11:57:20.000000000 +0100 @@ -229,8 +229,10 @@ g_return_if_fail (newlen <= (len + 2) * 2 + 62); break; case CAMEL_MIME_FILTER_BASIC_BASE64_DEC: - /* output can't possibly exceed the input size */ - camel_mime_filter_set_size (mime_filter, len, FALSE); + /* Output can't possibly exceed the input size, but add 1, + to make sure the mime_filter->outbuf will not be NULL, + in case the input stream is empty. */ + camel_mime_filter_set_size (mime_filter, len + 1, FALSE); newlen = g_base64_decode_step ( in, len, (guchar *) mime_filter->outbuf, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.26.4/src/camel/providers/imapx/camel-imapx-server.c new/evolution-data-server-3.26.5/src/camel/providers/imapx/camel-imapx-server.c --- old/evolution-data-server-3.26.4/src/camel/providers/imapx/camel-imapx-server.c 2018-01-08 11:05:37.000000000 +0100 +++ new/evolution-data-server-3.26.5/src/camel/providers/imapx/camel-imapx-server.c 2018-02-05 11:57:20.000000000 +0100 @@ -4306,9 +4306,11 @@ g_return_val_if_fail (CAMEL_IS_IMAPX_MAILBOX (destination), FALSE); g_return_val_if_fail (uids != NULL, FALSE); - /* To get permanent flags. That's okay if the "SELECT" fails here, as it can be - due to the folder being write-only; just ignore the error and continue. */ - camel_imapx_server_ensure_selected_sync (is, destination, cancellable, NULL); + if (camel_imapx_mailbox_get_permanentflags (destination) == ~0) { + /* To get permanent flags. That's okay if the "SELECT" fails here, as it can be + due to the folder being write-only; just ignore the error and continue. */ + camel_imapx_server_ensure_selected_sync (is, destination, cancellable, NULL); + } if (g_cancellable_set_error_if_cancelled (cancellable, error)) return FALSE; @@ -5419,6 +5421,7 @@ return TRUE; } + camel_folder_sort_uids (folder, changed_uids); stamps = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) camel_pstring_free, NULL); if (can_influence_flags) { @@ -5451,6 +5454,8 @@ if (changed_uids->len > 20) camel_folder_summary_prepare_fetch_all (camel_folder_get_folder_summary (folder), NULL); + camel_folder_summary_lock (camel_folder_get_folder_summary (folder)); + off_orset = on_orset = 0; for (i = 0; i < changed_uids->len; i++) { CamelIMAPXMessageInfo *xinfo; @@ -5580,6 +5585,8 @@ g_clear_object (&info); } + camel_folder_summary_unlock (camel_folder_get_folder_summary (folder)); + nothing_to_do = (on_orset == 0) && (off_orset == 0) && diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evolution-data-server-3.26.4/src/libedataserver/e-source.c new/evolution-data-server-3.26.5/src/libedataserver/e-source.c --- old/evolution-data-server-3.26.4/src/libedataserver/e-source.c 2018-01-08 11:05:37.000000000 +0100 +++ new/evolution-data-server-3.26.5/src/libedataserver/e-source.c 2018-02-05 11:57:20.000000000 +0100 @@ -137,9 +137,6 @@ GMutex connection_status_change_lock; ESourceConnectionStatus connection_status; - GSource *credentials_required_call; - GMutex credentials_required_call_lock; - GMutex property_lock; gchar *display_name; @@ -913,7 +910,7 @@ g_source_set_callback ( source->priv->connection_status_change, source_idle_connection_status_change_cb, - source, NULL); + g_object_ref (source), g_object_unref); g_source_attach ( source->priv->connection_status_change, source->priv->main_context); @@ -1227,6 +1224,13 @@ priv = E_SOURCE_GET_PRIVATE (object); + /* Lock & unlock to make sure any pending operations in other threads + which use this lock are already done */ + g_rec_mutex_lock (&priv->lock); + g_rec_mutex_unlock (&priv->lock); + + g_mutex_lock (&priv->property_lock); + if (priv->dbus_object != NULL) { EDBusObject *dbus_object; EDBusSource *dbus_source; @@ -1245,6 +1249,8 @@ priv->dbus_object = NULL; } + g_mutex_unlock (&priv->property_lock); + if (priv->main_context != NULL) { g_main_context_unref (priv->main_context); priv->main_context = NULL; @@ -1267,14 +1273,6 @@ } g_mutex_unlock (&priv->connection_status_change_lock); - g_mutex_lock (&priv->credentials_required_call_lock); - if (priv->credentials_required_call != NULL) { - g_source_destroy (priv->credentials_required_call); - g_source_unref (priv->credentials_required_call); - priv->credentials_required_call = NULL; - } - g_mutex_unlock (&priv->credentials_required_call_lock); - g_hash_table_remove_all (priv->extensions); /* Chain up to parent's dispose() method. */ @@ -1290,7 +1288,6 @@ g_mutex_clear (&priv->changed_lock); g_mutex_clear (&priv->connection_status_change_lock); - g_mutex_clear (&priv->credentials_required_call_lock); g_mutex_clear (&priv->property_lock); g_free (priv->display_name); @@ -2436,7 +2433,6 @@ source->priv = E_SOURCE_GET_PRIVATE (source); g_mutex_init (&source->priv->changed_lock); g_mutex_init (&source->priv->connection_status_change_lock); - g_mutex_init (&source->priv->credentials_required_call_lock); g_mutex_init (&source->priv->property_lock); source->priv->key_file = g_key_file_new (); source->priv->extensions = extensions; @@ -2617,7 +2613,7 @@ g_source_set_callback ( source->priv->changed, source_idle_changed_cb, - source, (GDestroyNotify) NULL); + g_object_ref (source), g_object_unref); g_source_attach ( source->priv->changed, source->priv->main_context);