~ruther/guix-local

ce7d93ceda06f0332617a29fe0181f13d2c0b369 — Maxim Cournoyer 4 years ago 1de8c00
gnu: evolution-data-server: Update to 3.42.1.

* gnu/packages/gnome.scm (evolution-data-server): Update to 3.42.1.
Delete trailing #t.
[origin]: Remove patches.
[phases]{adjust-webkitgtk-version}: New phase.
* gnu/packages/patches/evolution-data-server-CVE-2020-14928.patch: Likewise.
* gnu/packages/patches/evolution-data-server-CVE-2020-16117.patch: Likewise.
* gnu/packages/patches/evolution-data-server-libical-compat.patch: Likewise.
* gnu/packages/patches/evolution-data-server-locales.patch: Likewise.
* gnu/packages/patches/evolution-data-server-printableoptions.patch: Likewise.
* gnu/local.mk (dist_patch_DATA): De-register them.
7 files changed, 11 insertions(+), 288 deletions(-)

M gnu/local.mk
M gnu/packages/gnome.scm
D gnu/packages/patches/evolution-data-server-CVE-2020-14928.patch
D gnu/packages/patches/evolution-data-server-CVE-2020-16117.patch
D gnu/packages/patches/evolution-data-server-libical-compat.patch
D gnu/packages/patches/evolution-data-server-locales.patch
D gnu/packages/patches/evolution-data-server-printableoptions.patch
M gnu/local.mk => gnu/local.mk +0 -5
@@ 1045,11 1045,6 @@ dist_patch_DATA =						\
  %D%/packages/patches/evilwm-lost-focus-bug.patch		\
  %D%/packages/patches/evolution-CVE-2020-11879.patch		\
  %D%/packages/patches/evolution-printableoptions.patch		\
  %D%/packages/patches/evolution-data-server-CVE-2020-14928.patch	\
  %D%/packages/patches/evolution-data-server-CVE-2020-16117.patch	\
  %D%/packages/patches/evolution-data-server-printableoptions.patch	\
  %D%/packages/patches/evolution-data-server-locales.patch	\
  %D%/packages/patches/evolution-data-server-libical-compat.patch	\
  %D%/packages/patches/exercism-disable-self-update.patch	\
  %D%/packages/patches/extempore-unbundle-external-dependencies.patch	\
  %D%/packages/patches/extundelete-e2fsprogs-1.44.patch		\

M gnu/packages/gnome.scm => gnu/packages/gnome.scm +11 -14
@@ 7614,21 7614,15 @@ Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
(define-public evolution-data-server
  (package
    (name "evolution-data-server")
    (version "3.34.2")
    (version "3.42.1")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://gnome/sources/" name "/"
                           (version-major+minor version) "/"
                           name "-" version ".tar.xz"))
       (patches
        (search-patches "evolution-data-server-locales.patch"
                        "evolution-data-server-libical-compat.patch"
                        "evolution-data-server-CVE-2020-14928.patch"
                        "evolution-data-server-CVE-2020-16117.patch"
                        "evolution-data-server-printableoptions.patch"))
       (sha256
        (base32 "16z85y6hhazcrp5ngw47w4x9r0j8zrj7awv5im58hhp0xs19zf1y"))))
        (base32 "0a7my8spwcaf2i2fz8ndddi1drv6l9gxq0qblmnkxzyhfwm7zrp6"))))
    (build-system cmake-build-system)
    (arguments
     '(#:configure-flags


@@ 7648,33 7642,36 @@ Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
               "-DENABLE_INTROSPECTION=ON"))  ;required for Vala bindings
       #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'adjust-webkitgtk-version
           (lambda _
             (substitute* "CMakeLists.txt"
               (("webkit2gtk-4.0")
                "webkit2gtk-4.1"))))
         (add-after 'unpack 'disable-failing-tests
           (lambda _
             ;; tests/book-migration/test-migration.c:160:test_fetch_contacts:
             ;; assertion failed (g_slist_length (contacts) == 20): (0 == 20)
             (delete-file-recursively "tests/book-migration")
             (substitute* "tests/CMakeLists.txt"
               (("add_subdirectory\\(book-migration\\)") ""))
             #t))
               (("add_subdirectory\\(book-migration\\)") ""))))
         (add-after 'unpack 'patch-paths
          (lambda _
            (substitute* '("tests/test-server-utils/e-test-server-utils.c"
                           "tests/libedata-book/data-test-utils.c"
                           "tests/libedata-book/test-book-cache-utils.c"
                           "tests/libedata-cal/test-cal-cache-utils.c")
              (("/bin/rm") (which "rm")))
            #t))
              (("/bin/rm") (which "rm")))))
         (add-before 'configure 'dont-override-rpath
           (lambda _
             (substitute* "CMakeLists.txt"
               ;; CMakeLists.txt hard-codes runpath to just the libdir.
               ;; Remove it so the configure flag is respected.
               (("SET\\(CMAKE_INSTALL_RPATH .*") ""))
             #t)))))
               (("SET\\(CMAKE_INSTALL_RPATH .*") "")))))))
    (native-inputs
     `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
       ("gobject-introspection" ,gobject-introspection)
       ("gperf" ,gperf)
       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
       ("intltool" ,intltool)
       ("pkg-config" ,pkg-config)
       ("vala" ,vala)

D gnu/packages/patches/evolution-data-server-CVE-2020-14928.patch => gnu/packages/patches/evolution-data-server-CVE-2020-14928.patch +0 -115
@@ 1,115 0,0 @@
From ba82be72cfd427b5d72ff21f929b3a6d8529c4df Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Mon, 22 Jun 2020 13:40:17 +0200
Subject: [PATCH] I#226 - CVE-2020-14928: Response Injection via STARTTLS in
 SMTP and POP3

Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/issues/226
---
 src/camel/camel-stream-buffer.c               | 19 +++++++++++++++++++
 src/camel/camel-stream-buffer.h               |  1 +
 src/camel/providers/pop3/camel-pop3-store.c   |  2 ++
 src/camel/providers/pop3/camel-pop3-stream.c  | 11 +++++++++++
 src/camel/providers/pop3/camel-pop3-stream.h  |  1 +
 .../providers/smtp/camel-smtp-transport.c     |  2 ++
 6 files changed, 36 insertions(+)

diff --git a/src/camel/camel-stream-buffer.c b/src/camel/camel-stream-buffer.c
index 3e2e0dd36..a6f605ae5 100644
--- a/src/camel/camel-stream-buffer.c
+++ b/src/camel/camel-stream-buffer.c
@@ -518,3 +518,22 @@ camel_stream_buffer_read_line (CamelStreamBuffer *sbf,
 
 	return g_strdup ((gchar *) sbf->priv->linebuf);
 }
+
+/**
+ * camel_stream_buffer_discard_cache:
+ * @sbf: a #CamelStreamBuffer
+ *
+ * Discards any cached data in the @sbf. The next read reads
+ * from the stream.
+ *
+ * Since: 3.38
+ **/
+void
+camel_stream_buffer_discard_cache (CamelStreamBuffer *sbf)
+{
+	g_return_if_fail (CAMEL_IS_STREAM_BUFFER (sbf));
+
+	sbf->priv->ptr = sbf->priv->buf;
+	sbf->priv->end = sbf->priv->buf;
+	sbf->priv->ptr[0] = '\0';
+}
diff --git a/src/camel/camel-stream-buffer.h b/src/camel/camel-stream-buffer.h
index ef92cfd8e..094e9926b 100644
--- a/src/camel/camel-stream-buffer.h
+++ b/src/camel/camel-stream-buffer.h
@@ -93,6 +93,7 @@ gint		camel_stream_buffer_gets	(CamelStreamBuffer *sbf,
 gchar *		camel_stream_buffer_read_line	(CamelStreamBuffer *sbf,
 						 GCancellable *cancellable,
 						 GError **error);
+void		camel_stream_buffer_discard_cache	(CamelStreamBuffer *sbf);
 
 G_END_DECLS
 
diff --git a/src/camel/providers/pop3/camel-pop3-store.c b/src/camel/providers/pop3/camel-pop3-store.c
index 81c370f0a..5c9eb1eaa 100644
--- a/src/camel/providers/pop3/camel-pop3-store.c
+++ b/src/camel/providers/pop3/camel-pop3-store.c
@@ -205,6 +205,8 @@ connect_to_server (CamelService *service,
 
 	if (tls_stream != NULL) {
 		camel_stream_set_base_stream (stream, tls_stream);
+		/* Truncate any left cached input from the insecure part of the session */
+		camel_pop3_stream_discard_cache (pop3_engine->stream);
 		g_object_unref (tls_stream);
 	} else {
 		g_prefix_error (
diff --git a/src/camel/providers/pop3/camel-pop3-stream.c b/src/camel/providers/pop3/camel-pop3-stream.c
index 74bb11e61..c485b9bd6 100644
--- a/src/camel/providers/pop3/camel-pop3-stream.c
+++ b/src/camel/providers/pop3/camel-pop3-stream.c
@@ -457,3 +457,14 @@ camel_pop3_stream_getd (CamelPOP3Stream *is,
 
 	return 1;
 }
+
+void
+camel_pop3_stream_discard_cache (CamelPOP3Stream *is)
+{
+	if (is) {
+		is->ptr = is->end = is->buf;
+		is->lineptr = is->linebuf;
+		is->lineend = is->linebuf + CAMEL_POP3_STREAM_LINE_SIZE;
+		is->ptr[0] = '\n';
+	}
+}
diff --git a/src/camel/providers/pop3/camel-pop3-stream.h b/src/camel/providers/pop3/camel-pop3-stream.h
index bb6dbb903..128c8c45a 100644
--- a/src/camel/providers/pop3/camel-pop3-stream.h
+++ b/src/camel/providers/pop3/camel-pop3-stream.h
@@ -87,6 +87,7 @@ gint		camel_pop3_stream_getd		(CamelPOP3Stream *is,
 						 guint *len,
 						 GCancellable *cancellable,
 						 GError **error);
+void		camel_pop3_stream_discard_cache	(CamelPOP3Stream *is);
 
 G_END_DECLS
 
diff --git a/src/camel/providers/smtp/camel-smtp-transport.c b/src/camel/providers/smtp/camel-smtp-transport.c
index 035baf367..1fc0f3206 100644
--- a/src/camel/providers/smtp/camel-smtp-transport.c
+++ b/src/camel/providers/smtp/camel-smtp-transport.c
@@ -323,6 +323,8 @@ connect_to_server (CamelService *service,
 
 	if (tls_stream != NULL) {
 		camel_stream_set_base_stream (stream, tls_stream);
+		/* Truncate any left cached input from the insecure part of the session */
+		camel_stream_buffer_discard_cache (transport->istream);
 		g_object_unref (tls_stream);
 	} else {
 		g_prefix_error (
-- 
GitLab


D gnu/packages/patches/evolution-data-server-CVE-2020-16117.patch => gnu/packages/patches/evolution-data-server-CVE-2020-16117.patch +0 -28
@@ 1,28 0,0 @@
From 2cc39592b532cf0dc994fd3694b8e6bf924c9ab5 Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Mon, 10 Feb 2020 10:00:32 +0100
Subject: [PATCH] I#189 - Crash on malformed server response with minimal
 capabilities

Closes https://gitlab.gnome.org/GNOME/evolution-data-server/issues/189
---
 src/camel/providers/imapx/camel-imapx-server.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/camel/providers/imapx/camel-imapx-server.c b/src/camel/providers/imapx/camel-imapx-server.c
index 3c38fb1e9..3883321ec 100644
--- a/src/camel/providers/imapx/camel-imapx-server.c
+++ b/src/camel/providers/imapx/camel-imapx-server.c
@@ -3045,7 +3045,8 @@ connected:
 
 			/* See if we got new capabilities
 			 * in the STARTTLS response. */
-			imapx_free_capability (is->priv->cinfo);
+			if (is->priv->cinfo)
+				imapx_free_capability (is->priv->cinfo);
 			is->priv->cinfo = NULL;
 			if (ic->status->condition == IMAPX_CAPABILITY) {
 				is->priv->cinfo = ic->status->u.cinfo;
-- 
GitLab


D gnu/packages/patches/evolution-data-server-libical-compat.patch => gnu/packages/patches/evolution-data-server-libical-compat.patch +0 -36
@@ 1,36 0,0 @@
Prevent test failure and possible data loss due to API change in libical 3.0.7.

https://gitlab.gnome.org/GNOME/evolution-data-server/issues/185
https://lists.infradead.org/pipermail/libical-devel/2020-January/000907.html

Adapted from upstream:

https://gitlab.gnome.org/GNOME/evolution-data-server/commit/77384ab552c19bf374dbeda53dc37f98d07bd4ec

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e16b8b225..b3c881967 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -111,7 +111,7 @@ add_definitions(-DSOUP_VERSION_MIN_REQUIRED=${soup_encoded_version})
 
 set(gcr_minimum_version 3.4)
 set(libgdata_minimum_version 0.15.1)
-set(libical_glib_minimum_version 3.0.5)
+set(libical_glib_minimum_version 3.0.7)
 set(libsecret_minimum_version 0.5)
 set(libxml_minimum_version 2.0.0)
 set(sqlite_minimum_version 3.7.17)
diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c
index 7501f2a43..93f4806ba 100644
--- a/src/calendar/libedata-cal/e-cal-meta-backend.c
+++ b/src/calendar/libedata-cal/e-cal-meta-backend.c
@@ -4067,8 +4067,7 @@ e_cal_meta_backend_inline_local_attachments_sync (ECalMetaBackend *meta_backend,
 					gchar *base64;
 
 					base64 = g_base64_encode ((const guchar *) content, len);
-					new_attach = i_cal_attach_new_from_data (base64, NULL, NULL);
+					new_attach = i_cal_attach_new_from_data (base64, (GFunc) g_free, NULL);
 					g_free (content);
-					g_free (base64);
 
 					ecmb_remove_all_but_filename_parameter (prop);

D gnu/packages/patches/evolution-data-server-locales.patch => gnu/packages/patches/evolution-data-server-locales.patch +0 -33
@@ 1,33 0,0 @@
This patch fixes locale canonicalization when using newer versions of
ICU.  It comes from the upstream repo, and should appear starting in
version 3.33.5.

From fe4ac94ce3c14f200e049a5d102fc0e4b811c71e Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Tue, 16 Jul 2019 07:22:07 +0200
Subject: [PATCH] I#137 - POSIX locale tests fail with ICU 64.x

Closes https://gitlab.gnome.org/GNOME/evolution-data-server/issues/137
---
 src/libedataserver/e-collator.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/libedataserver/e-collator.c b/src/libedataserver/e-collator.c
index 718eac5da..ec2cf7951 100644
--- a/src/libedataserver/e-collator.c
+++ b/src/libedataserver/e-collator.c
@@ -132,6 +132,11 @@ canonicalize_locale (const gchar *posix_locale,
 	gint   len;
 	const gchar *collation_type = NULL;
 
+	if (posix_locale && (
+	    g_ascii_strcasecmp (posix_locale, "C") == 0 ||
+	    g_ascii_strcasecmp (posix_locale, "POSIX") == 0))
+		posix_locale = "en_US_POSIX";
+
 	len = uloc_canonicalize (posix_locale, locale_buffer, LOCALE_BUFFER_LEN, &status);
 
 	if (U_FAILURE (status)) {
-- 
2.22.0


D gnu/packages/patches/evolution-data-server-printableoptions.patch => gnu/packages/patches/evolution-data-server-printableoptions.patch +0 -57
@@ 1,57 0,0 @@
Patch adapted from upstream c3915bb99638c1ccf57217097b14b5db69bcac96
by Milan Crha:

    PrintableOptions.cmake: Correct variable name comparison
    
    CMake 3.20.1 errors out with:
    
    CMake Error at cmake/modules/PrintableOptions.cmake:38 (message):
       variable name cannot be empty
     Call Stack (most recent call first):
       CMakeLists.txt:152 (add_printable_variable)
    
    Change how the parameter value is compared, to fix it.

--- a/cmake/modules/PrintableOptions.cmake
+++ b/cmake/modules/PrintableOptions.cmake
@@ -19,32 +19,32 @@
 #    prints all the build options previously added with the above functions
 
 macro(add_printable_variable_bare _name)
-	if(_name STREQUAL "")
+	if("${_name}" STREQUAL "")
 		message(FATAL_ERROR "variable name cannot be empty")
-	endif(_name STREQUAL "")
+	endif("${_name}" STREQUAL "")
 	list(APPEND _printable_options ${_name})
 endmacro()
 
 macro(add_printable_option _name _description _default_value)
-	if(_name STREQUAL "")
+	if("${_name}" STREQUAL "")
 		message(FATAL_ERROR "option name cannot be empty")
-	endif(_name STREQUAL "")
+	endif("${_name}" STREQUAL "")
 	option(${_name} ${_description} ${_default_value})
 	add_printable_variable_bare(${_name})
 endmacro()
 
 macro(add_printable_variable _name _description _default_value)
-	if(_name STREQUAL "")
+	if("${_name}" STREQUAL "")
 		message(FATAL_ERROR "variable name cannot be empty")
-	endif(_name STREQUAL "")
+	endif("${_name}" STREQUAL "")
 	set(${_name} ${_default_value} CACHE STRING ${_description})
 	add_printable_variable_bare(${_name})
 endmacro()
 
 macro(add_printable_variable_path _name _description _default_value)
-	if(_name STREQUAL "")
+	if("${_name}" STREQUAL "")
 		message(FATAL_ERROR "path variable name cannot be empty")
-	endif(_name STREQUAL "")
+	endif("${_name}" STREQUAL "")
 	set(${_name} ${_default_value} CACHE PATH ${_description})
 	add_printable_variable_bare(${_name})
 endmacro()