ARC: Reset received ARC instance counter before next message on a connection...
authorJeremy Harris <jgh146exb@wizmail.org>
Tue, 17 Dec 2019 10:46:21 +0000 (10:46 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Tue, 17 Dec 2019 10:46:21 +0000 (10:46 +0000)
doc/doc-txt/ChangeLog
src/src/smtp_in.c
test/confs/4560
test/confs/4562 [new symlink]
test/log/4562 [new file with mode: 0644]
test/mail/4562.a [new file with mode: 0644]
test/scripts/4560-ARC/4562 [new file with mode: 0644]

index ac4d57af9d992cdc6a05a1a67ab46ef445a1a66e..f4963389ee85f308496a0d30f1bf5ac7d9d5416f 100644 (file)
@@ -48,6 +48,11 @@ JH/11 Bug 2494: Unset the default for dmarc_tld_file.  Previously a naiive
 JH/12 Fix an uninitialised flag in early-pipelining.  Previously connections
       could, depending on the platform, hang at the STARTTLS response.
 
 JH/12 Fix an uninitialised flag in early-pipelining.  Previously connections
       could, depending on the platform, hang at the STARTTLS response.
 
+JH/13 Bug 2498: Reset a counter used for ARC verify before handling another
+      message on a connection.  Previously if one message had ARC headers and
+      the following one did not, a crash could result when adding an
+      Authentication-Results: header.
+
 
 Exim version 4.93
 -----------------
 
 Exim version 4.93
 -----------------
index 9e2b39c4e37d93694a0995a69ece91db3f68375b..0ae89a48cc10613615cc68baec3c3131a74dfa5e 100644 (file)
@@ -2092,6 +2092,7 @@ dmarc_used_domain = NULL;
 #endif
 #ifdef EXPERIMENTAL_ARC
 arc_state = arc_state_reason = NULL;
 #endif
 #ifdef EXPERIMENTAL_ARC
 arc_state = arc_state_reason = NULL;
+arc_received_instance = 0;
 #endif
 dsn_ret = 0;
 dsn_envid = NULL;
 #endif
 dsn_ret = 0;
 dsn_envid = NULL;
index ad634a42efddb8fa30658d8662fb62b0d72b7c72..d945999a6871577e6878a6e3fbaffef3855b0744 100644 (file)
@@ -15,6 +15,7 @@ acl_smtp_data = check_data
 
 log_selector = +received_recipients +dkim_verbose
 queue_only
 
 log_selector = +received_recipients +dkim_verbose
 queue_only
+queue_run_in_order
 
 # ----- ACL -----
 begin acl
 
 # ----- ACL -----
 begin acl
diff --git a/test/confs/4562 b/test/confs/4562
new file mode 120000 (symlink)
index 0000000..359a76c
--- /dev/null
@@ -0,0 +1 @@
+4560
\ No newline at end of file
diff --git a/test/log/4562 b/test/log/4562
new file mode 100644 (file)
index 0000000..b4320bf
--- /dev/null
@@ -0,0 +1,25 @@
+
+******** SERVER ********
+1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port PORT_D
+1999-03-02 09:44:33 10HmaX-0005vi-00 arc_state:      <pass>
+1999-03-02 09:44:33 10HmaX-0005vi-00 domains:        <test.ex>
+1999-03-02 09:44:33 10HmaX-0005vi-00 arc_oldest_pass <1>
+1999-03-02 09:44:33 10HmaX-0005vi-00 reason:         <>
+1999-03-02 09:44:33 10HmaX-0005vi-00 lh_A-R:         < test.ex; arc=none>
+1999-03-02 09:44:33 10HmaX-0005vi-00 lh-ams:         < i=1; test.ex; arc=none>
+1999-03-02 09:44:33 10HmaX-0005vi-00 oldest-p-ams:   <i=1; test.ex; arc=none>
+1999-03-02 09:44:33 10HmaX-0005vi-00 <= has_arc@bloggs.com H=(xxx) [127.0.0.1] P=smtp S=sss ARC id=qwerty1234@disco-zombie.net for a@test.ex
+1999-03-02 09:44:33 10HmaY-0005vi-00 arc_state:      <none>
+1999-03-02 09:44:33 10HmaY-0005vi-00 domains:        <>
+1999-03-02 09:44:33 10HmaY-0005vi-00 arc_oldest_pass <1>
+1999-03-02 09:44:33 10HmaY-0005vi-00 reason:         <>
+1999-03-02 09:44:33 10HmaY-0005vi-00 lh_A-R:         <>
+1999-03-02 09:44:33 10HmaY-0005vi-00 lh-ams:         <>
+1999-03-02 09:44:33 10HmaY-0005vi-00 oldest-p-ams:   <>
+1999-03-02 09:44:33 10HmaY-0005vi-00 <= no_arc@bloggs.com H=(xxx) [127.0.0.1] P=smtp S=sss id=qwerty1234@disco-zombie.net for a@test.ex
+1999-03-02 09:44:33 Start queue run: pid=pppp
+1999-03-02 09:44:33 10HmaX-0005vi-00 => a <a@test.ex> R=d1 T=tfile
+1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaY-0005vi-00 => a <a@test.ex> R=d1 T=tfile
+1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
+1999-03-02 09:44:33 End queue run: pid=pppp
diff --git a/test/mail/4562.a b/test/mail/4562.a
new file mode 100644 (file)
index 0000000..4a83ce6
--- /dev/null
@@ -0,0 +1,44 @@
+From has_arc@bloggs.com Tue Mar 02 09:44:33 1999
+Authentication-Results: test.ex;
+       arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1
+Received: from [127.0.0.1] (helo=xxx)
+       by test.ex with smtp (Exim x.yz)
+       (envelope-from <has_arc@bloggs.com>)
+       id 10HmaX-0005vi-00
+       for a@test.ex; Tue, 2 Mar 1999 09:44:33 +0000
+ARC-Seal: i=1; a=rsa-sha256; cv=none; d=test.ex; s=sel; t=1521752658; b=
+        xcIN0OEpAc3s8riODm31Q6JgmIECch3iVd1LXWwsypGpCY2UFFuo5HhCEf4a043q
+        YZ+zn/MbFFkvwIqleeQkJ7S5UcvfM8dv/V4YnwAe+JD8r79glh/FRq6uKlc0ixLS
+        CllJMwj98J1P1K9+gwmO5TrD1eTZV68caZj77P+X2kw=
+ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=test.ex;
+         h=from:to:date:message-id:subject; s=sel; bh=3UbbJTudPxmejzh7U1
+        Zg33U3QT+16kfV2eOTvMeiEis=; b=WgE+YWSm48w/P448gPlBBNCKt2SJ4gosPx
+        0JQ98aZJhun2RaVcUO3INc+kZv8YOijofMzFqJxVn1cgMjoU8/QSHIyyt40FzkQB
+        oSGmSrCjtRnzS8pbp491NX3kGuetidaWE5muPSdOystg6mm1rBnl9sqVrwaynCmr
+        fu2jTuUfw=
+ARC-Authentication-Results: i=1; test.ex; arc=none
+Authentication-Results: test.ex; arc=none
+From: mrgus@text.ex
+To: bakawolf@yahoo.com
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+Message-ID: <qwerty1234@disco-zombie.net>
+Subject: simple test
+
+This is a simple test.
+
+From no_arc@bloggs.com Tue Mar 02 09:44:33 1999
+Authentication-Results: test.ex;
+       arc=none
+Received: from [127.0.0.1] (helo=xxx)
+       by test.ex with smtp (Exim x.yz)
+       (envelope-from <no_arc@bloggs.com>)
+       id 10HmaY-0005vi-00
+       for a@test.ex; Tue, 2 Mar 1999 09:44:33 +0000
+From: mrgus@text.ex
+To: bakawolf@yahoo.com
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+Message-ID: <qwerty1234@disco-zombie.net>
+Subject: simple test
+
+This is a simple test.
+
diff --git a/test/scripts/4560-ARC/4562 b/test/scripts/4560-ARC/4562
new file mode 100644 (file)
index 0000000..96efd77
--- /dev/null
@@ -0,0 +1,65 @@
+# ARC verify, sequential messages on connection
+#
+exim -DSERVER=server -bd -oX PORT_D
+****
+#
+# A two-message connection. First should pass ARC.
+# Mail original in aux-fixed/4560.msg1.txt
+# Sig generated by: perl aux-fixed/dkim/sign_arc.pl < aux-fixed/4560.msg1.txt
+client 127.0.0.1 PORT_D
+??? 220
+HELO xxx
+??? 250
+MAIL FROM:<has_arc@bloggs.com>
+??? 250
+RCPT TO:<a@test.ex>
+??? 250
+DATA
+??? 354
+ARC-Seal: i=1; a=rsa-sha256; cv=none; d=test.ex; s=sel; t=1521752658; b=
+        xcIN0OEpAc3s8riODm31Q6JgmIECch3iVd1LXWwsypGpCY2UFFuo5HhCEf4a043q
+        YZ+zn/MbFFkvwIqleeQkJ7S5UcvfM8dv/V4YnwAe+JD8r79glh/FRq6uKlc0ixLS
+        CllJMwj98J1P1K9+gwmO5TrD1eTZV68caZj77P+X2kw=
+ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=test.ex;
+         h=from:to:date:message-id:subject; s=sel; bh=3UbbJTudPxmejzh7U1
+        Zg33U3QT+16kfV2eOTvMeiEis=; b=WgE+YWSm48w/P448gPlBBNCKt2SJ4gosPx
+        0JQ98aZJhun2RaVcUO3INc+kZv8YOijofMzFqJxVn1cgMjoU8/QSHIyyt40FzkQB
+        oSGmSrCjtRnzS8pbp491NX3kGuetidaWE5muPSdOystg6mm1rBnl9sqVrwaynCmr
+        fu2jTuUfw=
+ARC-Authentication-Results: i=1; test.ex; arc=none
+Authentication-Results: test.ex; arc=none
+From: mrgus@text.ex
+To: bakawolf@yahoo.com
+Date: Thu, 19 Nov 2015 17:00:07 -0700
+Message-ID: <qwerty1234@disco-zombie.net>
+Subject: simple test
+
+This is a simple test.
+.
+??? 250
+MAIL FROM:<no_arc@bloggs.com>
+??? 250
+RCPT TO:<a@test.ex>
+??? 250
+DATA
+??? 354
+From: mrgus@text.ex
+To: bakawolf@yahoo.com
+Date: Thu, 19 Nov 2015 17:00:07 -0700
+Message-ID: <qwerty1234@disco-zombie.net>
+Subject: simple test
+
+This is a simple test.
+.
+??? 250
+QUIT
+??? 221
+****
+exim -DSERVER=server -DNOTDAEMON -q
+****
+#
+#
+#
+killdaemon
+no_stdout_check
+no_msglog_check