------- You are receiving this mail because: -------
You are on the CC list for the bug.

http://bugs.exim.org/show_bug.cgi?id=1444
           Summary: non-SMTP without -oi mangles linefeeds on multiple CRLF
           Product: Exim
           Version: N/A
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: bug
          Priority: medium
         Component: Delivery in general
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


As reported on exim-users in
Message-ID:
<capg4ibc_am90dcukjkcqwredime2njqjtxpcwk-55nz68bm...@mail.gmail.com>

Sending a mailbody on commandline with eg:
echo -en "To: [email protected]\r\nSubject:
test\r\n\r\ntest\r\n\r\ntest"|exim -d+all -f [email protected]
[email protected]
ends up in broken DKIM signatures. This is not caused by the DKIM code itself.
The debug output already shows
"test{CR}{LF}{CR}{CR}{LF}test"
coming through pdkim_feed().

It only happens if -oi is _not_ set and the messagebody ends either with a "."
or EOF.

The doubled {CR} is introduced by the code in
received.c:609ff:read_message_data()

The code for "dot_ends==true" in lines 661ff doesn't handle the "\r\n\r\n" case
correctly IMO.

strace shows that it already ends up in the spool file as
21449 write(3, "1WFQ3f-0005Zx-07-D\ntest\n\r\n\r\ntest\n", 33) = 33

The "\r" right after "\n" is written instead of silently removed.

I think
--------
--- receive.c.orig      2013-10-25 02:46:27.000000000 +0200
+++ receive.c   2014-02-17 16:56:37.000000000 +0100
@@ -680,6 +680,7 @@

     case 1:                         /* After written "\n" */
     if (ch == '.') { ch_state = 3; continue; }
+    if (ch == '\r') { ch_state = 2; continue; }
     if (ch != '\n') ch_state = 0; else linelength = -1;
     break;

--------
should fix it.


-- 
Configure bugmail: http://bugs.exim.org/userprefs.cgi?tab=email

-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim 
details at http://www.exim.org/ ##

Reply via email to