summary refs log tree commit diff
diff options
context:
space:
mode:
authorLéo Le Bouter <lle-bout@zaclys.net>2021-03-10 11:49:35 +0100
committerLéo Le Bouter <lle-bout@zaclys.net>2021-03-10 11:51:09 +0100
commit70128b8afacf332b0aff69ebcad6868fd158e8ad (patch)
tree5a18002024f7a6d2828ec7db55cc11e5ebf0df57
parentfb4ccb86c26cc06d090576a6c281b5bb417f1ec9 (diff)
downloadguix-70128b8afacf332b0aff69ebcad6868fd158e8ad.tar.gz
gnu: cyrus-sasl: Fix CVE-2019-19906.
* gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/cyrus-sasl.scm (cyrus-sasl/fixed): New variable. Apply patch.
(cyrus-sasl)[replacement]: Graft.
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/cyrus-sasl.scm18
-rw-r--r--gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch25
3 files changed, 44 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index dcee722e79..43ed97692e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -917,6 +917,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/cursynth-wave-rand.patch			\
   %D%/packages/patches/cvs-CVE-2017-12836.patch		\
   %D%/packages/patches/cyrus-sasl-ac-try-run-fix.patch		\
+  %D%/packages/patches/cyrus-sasl-CVE-2019-19906.patch		\
   %D%/packages/patches/c++-gsl-find-system-gtest.patch		\
   %D%/packages/patches/date-output-pkg-config-files.patch	\
   %D%/packages/patches/datefudge-gettimeofday.patch		\
diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm
index 3e65a1faf6..691349a38f 100644
--- a/gnu/packages/cyrus-sasl.scm
+++ b/gnu/packages/cyrus-sasl.scm
@@ -45,6 +45,7 @@
             (sha256 (base32
                      "1m85zcpgfdhm43cavpdkhb1s2zq1b31472hq1w1gs3xh94anp1i6"))
             (patches (search-patches "cyrus-sasl-ac-try-run-fix.patch"))))
+   (replacement cyrus-sasl/fixed)
    (build-system gnu-build-system)
    (native-inputs
      `(("autoconf" ,autoconf)
@@ -80,3 +81,20 @@ server writers.")
    (license (license:non-copyleft "file://COPYING"
                                   "See COPYING in the distribution."))
    (home-page "https://cyrusimap.org/sasl/")))
+
+(define-public cyrus-sasl/fixed
+  (package
+    (inherit cyrus-sasl)
+    (version "2.1.27")
+    (source (origin
+              (method url-fetch)
+              (uri (list (string-append
+                          "https://cyrusimap.org/releases/cyrus-sasl-"
+                          version ".tar.gz")
+                         (string-append
+                          "ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-"
+                          version ".tar.gz")))
+              (sha256 (base32
+                       "1m85zcpgfdhm43cavpdkhb1s2zq1b31472hq1w1gs3xh94anp1i6"))
+              (patches (search-patches "cyrus-sasl-ac-try-run-fix.patch"
+                                       "cyrus-sasl-CVE-2019-19906.patch"))))))
diff --git a/gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch b/gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch
new file mode 100644
index 0000000000..acdf682430
--- /dev/null
+++ b/gnu/packages/patches/cyrus-sasl-CVE-2019-19906.patch
@@ -0,0 +1,25 @@
+From dcc9f51cbd4ed622cfb0f9b1c141eb2ffe3b12f1 Mon Sep 17 00:00:00 2001
+From: Quanah Gibson-Mount <quanah@symas.com>
+Date: Tue, 18 Feb 2020 19:05:12 +0000
+Subject: [PATCH] Fix #587
+
+Off by one error in common.c, CVE-2019-19906.
+
+Thanks to Stephan Zeisberg for reporting
+---
+ lib/common.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/common.c b/lib/common.c
+index bc3bf1df..9969d6aa 100644
+--- a/lib/common.c
++++ b/lib/common.c
+@@ -190,7 +190,7 @@ int _sasl_add_string(char **out, size_t *alloclen,
+ 
+   if (add==NULL) add = "(null)";
+ 
+-  addlen=strlen(add); /* only compute once */
++  addlen=strlen(add)+1; /* only compute once */
+   if (_buf_alloc(out, alloclen, (*outlen)+addlen)!=SASL_OK)
+     return SASL_NOMEM;
+