~ruther/guix-local

c297e965d51a332b15bccbb180d6f9a400cb8805 — Leo Famulari 8 years ago 3ebbf6d
gnu: procmail: Fix CVE-2017-16844.

* gnu/packages/patches/procmail-CVE-2017-16844.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/mail.scm (procmail)[source]: Use it.
3 files changed, 28 insertions(+), 1 deletions(-)

M gnu/local.mk
M gnu/packages/mail.scm
A gnu/packages/patches/procmail-CVE-2017-16844.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 978,6 978,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/portmidi-modular-build.patch		\
  %D%/packages/patches/procmail-ambiguous-getline-debian.patch  \
  %D%/packages/patches/procmail-CVE-2014-3618.patch		\
  %D%/packages/patches/procmail-CVE-2017-16844.patch		\
  %D%/packages/patches/proot-test-fhs.patch			\
  %D%/packages/patches/psm-arch.patch				\
  %D%/packages/patches/psm-ldflags.patch			\

M gnu/packages/mail.scm => gnu/packages/mail.scm +2 -1
@@ 1611,7 1611,8 @@ deliver it in various ways.")
       ;; getline() in formail.c.  The patch is provided by Debian as
       ;; patch 24.
       (patches (search-patches "procmail-ambiguous-getline-debian.patch"
                                "procmail-CVE-2014-3618.patch"))))
                                "procmail-CVE-2014-3618.patch"
                                "procmail-CVE-2017-16844.patch"))))
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (replace 'configure

A gnu/packages/patches/procmail-CVE-2017-16844.patch => gnu/packages/patches/procmail-CVE-2017-16844.patch +25 -0
@@ 0,0 1,25 @@
Fix CVE-2017-16844:

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-16844
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=876511

Patch copied from Debian procmail package 3.22-26:

http://http.debian.net/debian/pool/main/p/procmail/procmail_3.22-26.debian.tar.xz

From: Santiago Vila <sanvila@debian.org>
Subject: Fix heap-based buffer overflow in loadbuf()
Bug-Debian: http://bugs.debian.org/876511
X-Debian-version: 3.22-26

--- a/src/formisc.c
+++ b/src/formisc.c
@@ -103,7 +103,7 @@
 }
 							    /* append to buf */
 void loadbuf(text,len)const char*const text;const size_t len;
-{ if(buffilled+len>buflen)			  /* buf can't hold the text */
+{ while(buffilled+len>buflen)			  /* buf can't hold the text */
      buf=realloc(buf,buflen+=Bsize);
   tmemmove(buf+buffilled,text,len);buffilled+=len;
 }