[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#827111: marked as done (jessie-pu: package exim4/4.84.2-2)



Your message dated Sat, 17 Sep 2016 13:08:06 +0100
with message-id <1474114086.2011.126.camel@adam-barratt.org.uk>
and subject line Closing p-u bugs for updates in 8.6
has caused the Debian Bug report #827111,
regarding jessie-pu: package exim4/4.84.2-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
827111: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=827111
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: jessie
User: release.debian.org@packages.debian.org
Usertags: pu

Hello,

I would like to update exim4 in jessie with the following changes:

1 The upload for DSA-3517-1 introduced a new expansion item
($initial_cwd). - Exim now changes to / at start and therefore cwd did
not show the original working directory anymore. However in the upload
$initial_cwd did not work because of a missing patch. 

2 Fix a upstream issue which might cause duplicate mails.

3 Fix a crash on exim -be '${if crypteq{xxx}{\$aaa}{yes}{no}}'

4 Improve NEWS file, adding more helpful info on add_environment.

cu Andreas
-- 
`What a good friend you are to him, Dr. Maturin. His other friends are
so grateful to you.'
`I sew his ears on from time to time, sure'
diff -Nru exim4-4.84.2/debian/changelog exim4-4.84.2/debian/changelog
--- exim4-4.84.2/debian/changelog	2016-03-13 18:45:53.000000000 +0100
+++ exim4-4.84.2/debian/changelog	2016-06-12 13:56:36.000000000 +0200
@@ -1,3 +1,25 @@
+exim4 (4.84.2-2) jessie; urgency=medium
+
+  * 90_Cutthrough-Fix-bug-with-dot-only-line.patch: JH/38 Fix cutthrough bug
+    with body lines having a single dot. The dot was incorrectly not doubled
+    on cutthrough transmission, hence seen as a body-termination at the
+    receiving system - resulting in truncated mails.  Commonly the sender saw
+    a TCP-level error, and retransmitted the nessage via the normal
+    store-and-forward channel. This could result in duplicates received - but
+    deduplicating mailstores were liable to retain only the initial truncated
+    version.
+  * 91_Expansions-Fix-crash-in-crypteq-On-OpenBSD-a-bad-sec.patch: Fix crash
+    on "exim -be '${if crypteq{xxx}{\$aaa}{yes}{no}}'". Closes: #812585
+  * Improve on NEWS file. Closes: #81834
+  * Add 89_01_p_Delay-chdir-until-we-opened-the-main-config.patch. Backport
+    3de973a29de6852d61ba9bf1845835d08ca5a5ab (Delay chdir(/) until we opened
+    the main config) to actually make $initial_cwd expansion work. Also unfuzz
+    89_02_Store-the-initial-working-directory.diff.
+    (Thanks, Серж ИвановЪ for bugreport and pointer to missing patch) Closes:
+    #818897, #826646
+
+ -- Andreas Metzler <ametzler@debian.org>  Sun, 12 Jun 2016 13:56:30 +0200
+
 exim4 (4.84.2-1) jessie-security; urgency=high
 
   * New upstream security release.
diff -Nru exim4-4.84.2/debian/exim4-config.NEWS exim4-4.84.2/debian/exim4-config.NEWS
--- exim4-4.84.2/debian/exim4-config.NEWS	2016-03-13 18:46:04.000000000 +0100
+++ exim4-4.84.2/debian/exim4-config.NEWS	2016-06-12 13:26:52.000000000 +0200
@@ -1,14 +1,26 @@
-exim4 (4.84.2-1) jessie-security; urgency=high
+exim4 (4.84.2-2) jessie; urgency=medium
 
   As part of the fix for CVE-2016-1531 updated Exim versions clean
   the complete execution environment by default, affecting Exim and
-  subprocesses such as transports calling other programs, and thus may break
+  subprocesses such as routers calling other programs, and thus may break
   existing installations. New configuration options (keep_environment,
-  add_environment) were introduced to adjust this behavior. The
-  debian configuration adds the macros MAIN_KEEP_ENVIRONMENT and
-  MAIN_ADD_ENVIRONMENT to easily set these options.
+  add_environment) were introduced to adjust this behavior. Because of the
+  possible breakage Exim will show a runtime warning if keep_environment is
+  not set.
 
- -- Andreas Metzler <ametzler@debian.org>  Sat, 12 Mar 2016 08:17:40 +0100
+  The Debian exim4 configuration does not rely on specific environment
+  variables and therefore sets 'keep_environment =' (i.e confirm empty
+  environment).
+
+  Users of custom Exim configurations will need to check whether their setup
+  continues to work with the abovementioned upstream change and modify the
+  Exim environment as needed otherwise. If the setup works fine with empty
+  environment it is still necessary to set the main configuration option
+  "keep_environment =" to quiet the runtime warning.
+
+  See <https://exim.org/static/doc/CVE-2016-1531.txt> for details.
+
+ -- Andreas Metzler <ametzler@debian.org>  Mon, 28 Mar 2016 17:58:09 +0200
 
 exim4 (4.68-1) unstable; urgency=low
 
diff -Nru exim4-4.84.2/debian/patches/89_01_p_Delay-chdir-until-we-opened-the-main-config.patch exim4-4.84.2/debian/patches/89_01_p_Delay-chdir-until-we-opened-the-main-config.patch
--- exim4-4.84.2/debian/patches/89_01_p_Delay-chdir-until-we-opened-the-main-config.patch	1970-01-01 01:00:00.000000000 +0100
+++ exim4-4.84.2/debian/patches/89_01_p_Delay-chdir-until-we-opened-the-main-config.patch	2016-06-12 13:42:19.000000000 +0200
@@ -0,0 +1,76 @@
+Backport of 3de973a29de6852d61ba9bf1845835d08ca5a5ab
+
+From: "Heiko Schlittermann (HS12-RIPE)" <hs@schlittermann.de>
+Date: Wed, 2 Mar 2016 22:07:45 +0100
+Subject: [PATCH] Delay chdir(/) until we opened the main config
+
+--- a/doc/spec.txt
++++ b/doc/spec.txt
+@@ -3361,8 +3361,6 @@ brief message about itself and exits.
+     first file that exists is used. Failure to open an existing file stops Exim
+     from proceeding any further along the list, and an error is generated.
+ 
+-    The file names need to be absolute names.
+-
+     When this option is used by a caller other than root, and the list is
+     different from the compiled-in list, Exim gives up its root privilege
+     immediately, and runs with the real and effective uid and gid set to those
+--- a/src/exim.c
++++ b/src/exim.c
+@@ -3683,17 +3683,16 @@ init_lookup_list();
+ 
+ /* Read the main runtime configuration data; this gives up if there
+ is a failure. It leaves the configuration file open so that the subsequent
+-configuration data for delivery can be read if needed. */
++configuration data for delivery can be read if needed.
+ 
+-/* To be safe: change the working directory to /. */
+-if (Uchdir("/") < 0)
+-  {
+-    perror("exim: chdir `/': ");
+-    exit(EXIT_FAILURE);
+-  }
++NOTE: immediatly after opening the configuration file we change the working
++directory to "/"! Later we change to $spool_directory. We do it there, because
++during readconf_main() some expansion takes place already. */
+ 
+ readconf_main();
+ 
++/* Now in directory "/" */
++
+ if (cleanup_environment() == FALSE)
+   log_write(0, LOG_PANIC_DIE, "Can't cleanup environment");
+ 
+--- a/src/readconf.c
++++ b/src/readconf.c
+@@ -2969,14 +2969,6 @@ while((filename = string_nextinlist(&lis
+        != NULL)
+   {
+ 
+-  /* To avoid confusion: Exim changes to / at the very beginning and
+-   * and to $spool_directory later. */
+-  if (filename[0] != '/')
+-    {
+-    fprintf(stderr, "-C %s: only absolute names are allowed\n", filename);
+-    exit(EXIT_FAILURE);
+-  }
+-
+   /* Cut out all the fancy processing unless specifically wanted */
+ 
+   #if defined(CONFIGURE_FILE_USE_NODE) || defined(CONFIGURE_FILE_USE_EUID)
+@@ -3030,6 +3022,15 @@ while((filename = string_nextinlist(&lis
+   if (config_file != NULL || errno != ENOENT) break;
+   }
+ 
++/* Now, once we found and opened our configuration file, we change the directory
++to a safe place. Later we change to $spool_directory. */
++
++if (Uchdir("/") < 0)
++  {
++  perror("exim: chdir `/': ");
++  exit(EXIT_FAILURE);
++  }
++
+ /* On success, save the name for verification; config_filename is used when
+ logging configuration errors (it changes for .included files) whereas
+ config_main_filename is the name shown by -bP. Failure to open a configuration
diff -Nru exim4-4.84.2/debian/patches/89_02_Store-the-initial-working-directory.diff exim4-4.84.2/debian/patches/89_02_Store-the-initial-working-directory.diff
--- exim4-4.84.2/debian/patches/89_02_Store-the-initial-working-directory.diff	2016-03-13 18:45:53.000000000 +0100
+++ exim4-4.84.2/debian/patches/89_02_Store-the-initial-working-directory.diff	2016-06-12 13:36:46.000000000 +0200
@@ -2,8 +2,8 @@
  Bug 1805 https://bugs.exim.org/show_bug.cgi?id=1805
 Origin: upstream
 
---- exim4-4.84.2.orig/src/globals.c
-+++ exim4-4.84.2/src/globals.c
+--- a/src/globals.c
++++ b/src/globals.c
 @@ -759,6 +759,7 @@ BOOL    ignore_fromline_local  = FALSE;
  uschar *ignore_fromline_hosts  = NULL;
  BOOL    inetd_wait_mode        = FALSE;
@@ -12,11 +12,11 @@
  uschar *interface_address      = NULL;
  int     interface_port         = -1;
  BOOL    is_inetd               = FALSE;
---- exim4-4.84.2.orig/src/exim.c
-+++ exim4-4.84.2/src/exim.c
-@@ -3692,6 +3692,13 @@ if (Uchdir("/") < 0)
-     exit(EXIT_FAILURE);
-   }
+--- a/src/exim.c
++++ b/src/exim.c
+@@ -3689,6 +3689,13 @@ NOTE: immediatly after opening the confi
+ directory to "/"! Later we change to $spool_directory. We do it there, because
+ during readconf_main() some expansion takes place already. */
  
 +/* Store the initial cwd before we change directories */
 +if ((initial_cwd = getcwd(NULL, 0)) == NULL)
@@ -27,8 +27,8 @@
 +
  readconf_main();
  
- if (cleanup_environment() == FALSE)
-@@ -3968,9 +3975,10 @@ if (((debug_selector & D_any) != 0 || (l
+ /* Now in directory "/" */
+@@ -3967,9 +3974,10 @@ if (((debug_selector & D_any) != 0 || (l
    {
    int i;
    uschar *p = big_buffer;
@@ -41,8 +41,8 @@
    while (*p) p++;
    (void)string_format(p, big_buffer_size - (p - big_buffer), " %d args:", argc);
    while (*p) p++;
---- exim4-4.84.2.orig/src/globals.h
-+++ exim4-4.84.2/src/globals.h
+--- a/src/globals.h
++++ b/src/globals.h
 @@ -486,6 +486,7 @@ extern BOOL    ignore_fromline_local;  /
  extern uschar *ignore_fromline_hosts;  /* Hosts permitted to send "From " */
  extern BOOL    inetd_wait_mode;        /* Whether running in inetd wait mode */
@@ -51,8 +51,8 @@
  extern BOOL    is_inetd;               /* True for inetd calls */
  extern uschar *iterate_item;           /* Item from iterate list */
  
---- exim4-4.84.2.orig/src/expand.c
-+++ exim4-4.84.2/src/expand.c
+--- a/src/expand.c
++++ b/src/expand.c
 @@ -501,6 +501,7 @@ static var_entry var_table[] = {
    { "host_data",           vtype_stringptr,   &host_data },
    { "host_lookup_deferred",vtype_int,         &host_lookup_deferred },
@@ -61,9 +61,9 @@
    { "inode",               vtype_ino,         &deliver_inode },
    { "interface_address",   vtype_stringptr,   &interface_address },
    { "interface_port",      vtype_int,         &interface_port },
---- exim4-4.84.2.orig/doc/spec.txt
-+++ exim4-4.84.2/doc/spec.txt
-@@ -10428,6 +10428,13 @@ $host_lookup_failed
+--- a/doc/spec.txt
++++ b/doc/spec.txt
+@@ -10426,6 +10426,13 @@ $host_lookup_failed
  
      See $host_lookup_deferred.
  
diff -Nru exim4-4.84.2/debian/patches/90_Cutthrough-Fix-bug-with-dot-only-line.patch exim4-4.84.2/debian/patches/90_Cutthrough-Fix-bug-with-dot-only-line.patch
--- exim4-4.84.2/debian/patches/90_Cutthrough-Fix-bug-with-dot-only-line.patch	1970-01-01 01:00:00.000000000 +0100
+++ exim4-4.84.2/debian/patches/90_Cutthrough-Fix-bug-with-dot-only-line.patch	2016-06-12 13:26:52.000000000 +0200
@@ -0,0 +1,32 @@
+From 2d51a06458d4fb771dca34966cf2d19c6820ce61 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Thu, 21 Jan 2016 15:37:08 +0000
+Subject: [PATCH] Cutthrough: Fix bug with dot-only line
+ JH/38 Fix cutthrough bug with body lines having a single dot. The dot was
+      incorrectly not doubled on cutthrough transmission, hence seen as a
+      body-termination at the receiving system - resulting in truncated mails.
+      Commonly the sender saw a TCP-level error, and retransmitted the nessage
+      via the normal store-and-forward channel. This could result in duplicates
+      received - but deduplicating mailstores were liable to retain only the
+      initial truncated version.
+ (cherry picked from commit 1bc460a64a0de0766d21f4f8660c6597bc410cbc)
+
+--- exim4-4.84.2.orig/src/receive.c
++++ exim4-4.84.2/src/receive.c
+@@ -838,7 +838,15 @@ while ((ch = (receive_getc)()) != EOF)
+       ch_state = 4;
+       continue;
+       }
+-    ch_state = 1;                       /* The dot itself is removed */
++    /* The dot was removed at state 3. For a doubled dot, here, reinstate
++    it to cutthrough. The current ch, dot or not, is passed both to cutthrough
++    and to file below. */
++    if (ch == '.')
++      {
++      uschar c= ch;
++      (void) cutthrough_puts(&c, 1);
++      }
++    ch_state = 1;
+     break;
+ 
+     case 4:                             /* After [CR] LF . CR */
diff -Nru exim4-4.84.2/debian/patches/91_Expansions-Fix-crash-in-crypteq-On-OpenBSD-a-bad-sec.patch exim4-4.84.2/debian/patches/91_Expansions-Fix-crash-in-crypteq-On-OpenBSD-a-bad-sec.patch
--- exim4-4.84.2/debian/patches/91_Expansions-Fix-crash-in-crypteq-On-OpenBSD-a-bad-sec.patch	1970-01-01 01:00:00.000000000 +0100
+++ exim4-4.84.2/debian/patches/91_Expansions-Fix-crash-in-crypteq-On-OpenBSD-a-bad-sec.patch	2016-06-12 13:26:52.000000000 +0200
@@ -0,0 +1,45 @@
+From 9dc2b215e83a63efa242f6acd3ab7af8b608e5a1 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Mon, 11 Jan 2016 15:50:22 +0000
+Subject: [PATCH] Expansions: Fix crash in crypteq: On OpenBSD a bad second-arg
+ results in an error-return from crypt().  Errorcheck that return.
+
+---
+ src/expand.c | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/src/expand.c b/src/expand.c
+index f144a75..2966c22 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -2791,7 +2791,7 @@ switch(cond_type)
+       #define XSTR(s) STR(s)
+       DEBUG(D_auth) debug_printf("crypteq: using %s()\n"
+         "  subject=%s\n  crypted=%s\n",
+-        (which == 0)? XSTR(DEFAULT_CRYPT) : (which == 1)? "crypt" : "crypt16",
++        which == 0 ? XSTR(DEFAULT_CRYPT) : which == 1 ? "crypt" : "crypt16",
+         coded, sub[1]);
+       #undef STR
+       #undef XSTR
+@@ -2800,8 +2800,16 @@ switch(cond_type)
+       salt), force failure. Otherwise we get false positives: with an empty
+       string the yield of crypt() is an empty string! */
+ 
+-      tempcond = (Ustrlen(sub[1]) < 2)? FALSE :
+-        (Ustrcmp(coded, sub[1]) == 0);
++      if (coded)
++	tempcond = Ustrlen(sub[1]) < 2 ? FALSE : Ustrcmp(coded, sub[1]) == 0;
++      else if (errno == EINVAL)
++	tempcond = FALSE;
++      else
++	{
++	expand_string_message = string_sprintf("crypt error: %s\n",
++	  US strerror(errno));
++	return NULL;
++	}
+       }
+     break;
+     #endif  /* SUPPORT_CRYPTEQ */
+-- 
+2.8.0.rc3
+
diff -Nru exim4-4.84.2/debian/patches/series exim4-4.84.2/debian/patches/series
--- exim4-4.84.2/debian/patches/series	2016-03-13 18:45:53.000000000 +0100
+++ exim4-4.84.2/debian/patches/series	2016-06-12 13:36:50.000000000 +0200
@@ -17,4 +17,7 @@
 86_Avoid-crash-with-badly-terminated-non-recognised-mim.patch
 87_Fix-transport-results-pipe-for-multiple-recipients-c.patch
 89_01_only_warn_on_nonempty_environment.diff
+89_01_p_Delay-chdir-until-we-opened-the-main-config.patch
 89_02_Store-the-initial-working-directory.diff
+90_Cutthrough-Fix-bug-with-dot-only-line.patch
+91_Expansions-Fix-crash-in-crypteq-On-OpenBSD-a-bad-sec.patch

--- End Message ---
--- Begin Message ---
Version: 8.6

The updates referred to in each of these bugs were included in today's
stable point release.

Regards,

Adam

--- End Message ---

Reply to: