ARC: fix crash on signing with missing key file
authorJeremy Harris <jgh146exb@wizmail.org>
Fri, 11 May 2018 15:26:17 +0000 (16:26 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Fri, 11 May 2018 15:26:17 +0000 (16:26 +0100)
src/src/arc.c
test/confs/4560
test/log/4560
test/mail/4560.a
test/scripts/4560-ARC/4560

index 787c6e1e203f6b371778d04ca96446151b58b833..58811274ef8b9efac8b1dbc720d2a12c99d8e536 100644 (file)
@@ -1696,7 +1696,8 @@ g = arc_sign_append_ams(g, &arc_sign_ctx, instance, identity, selector,
         including self (but with an empty b= in self)
 */
 
-g = arc_sign_prepend_as(g, &arc_sign_ctx, instance, identity, selector, &ar,
+if (g)
+  g = arc_sign_prepend_as(g, &arc_sign_ctx, instance, identity, selector, &ar,
       privkey, options);
 
 /* Finally, append the dkim headers and return the lot. */
index e2095af4cd2e4158e364799f0a6ae52cf9c140b5..ad634a42efddb8fa30658d8662fb62b0d72b7c72 100644 (file)
@@ -86,8 +86,12 @@ tsmtp:
   port =       PORT_D
   allow_localhost
 .ifndef OPTION
+.ifdef BAD
+  arc_sign =   $primary_hostname : sel : MISSING_KEY
+.else
   arc_sign =   $primary_hostname : sel : DIR/aux-fixed/dkim/dkim.private
 .endif
+.endif
 
 tmlist:
   driver =     smtp
index 153c3c7a4b73fdc637abaf287e9919a6d1a99940..c072bdda0f5439d51302d465b1c8b776e1d856c7 100644 (file)
 1999-03-02 09:44:33 10HmbQ-0005vi-00 => a <a@test.ex> R=d1 T=tfile
 1999-03-02 09:44:33 10HmbQ-0005vi-00 Completed
 1999-03-02 09:44:33 End queue run: pid=pppp
-1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
-1999-03-02 09:44:33 10HmbR-0005vi-00 H=(xxx) [127.0.0.1] Warning: ARC-FAIL
 1999-03-02 09:44:33 10HmbR-0005vi-00 arc_state:      <none>
 1999-03-02 09:44:33 10HmbR-0005vi-00 domains:        <>
 1999-03-02 09:44:33 10HmbR-0005vi-00 arc_oldest_pass <0>
 1999-03-02 09:44:33 10HmbR-0005vi-00 lh_A-R:         <>
 1999-03-02 09:44:33 10HmbR-0005vi-00 lh-ams:         <>
 1999-03-02 09:44:33 10HmbR-0005vi-00 oldest-p-ams:   <>
-1999-03-02 09:44:33 10HmbR-0005vi-00 <= CALLER@bloggs.com H=(xxx) [127.0.0.1] P=smtp S=sss for a@test.ex
+1999-03-02 09:44:33 10HmbR-0005vi-00 <= CALLER@bloggs.com H=(xxx) [127.0.0.1] P=smtp S=sss for za@test.ex
+1999-03-02 09:44:33 Start queue run: pid=pppp
+1999-03-02 09:44:33 10HmbR-0005vi-00 ARC: AMS signing: error:0906D06C:PEM routines:PEM_read_bio:no start line
+
+1999-03-02 09:44:33 10HmbS-0005vi-00 arc_state:      <none>
+1999-03-02 09:44:33 10HmbS-0005vi-00 domains:        <>
+1999-03-02 09:44:33 10HmbS-0005vi-00 arc_oldest_pass <0>
+1999-03-02 09:44:33 10HmbS-0005vi-00 reason:         <>
+1999-03-02 09:44:33 10HmbS-0005vi-00 lh_A-R:         < test.ex;\n      arc=none>
+1999-03-02 09:44:33 10HmbS-0005vi-00 lh-ams:         <>
+1999-03-02 09:44:33 10HmbS-0005vi-00 oldest-p-ams:   <>
+1999-03-02 09:44:33 10HmbS-0005vi-00 <= CALLER@bloggs.com H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss for a@test.ex
+1999-03-02 09:44:33 10HmbR-0005vi-00 => a@test.ex <za@test.ex> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbS-0005vi-00"
+1999-03-02 09:44:33 10HmbR-0005vi-00 Completed
+1999-03-02 09:44:33 End queue run: pid=pppp
+1999-03-02 09:44:33 Start queue run: pid=pppp
+1999-03-02 09:44:33 10HmbS-0005vi-00 => a <a@test.ex> R=d1 T=tfile
+1999-03-02 09:44:33 10HmbS-0005vi-00 Completed
+1999-03-02 09:44:33 End queue run: pid=pppp
+1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
+1999-03-02 09:44:33 10HmbT-0005vi-00 H=(xxx) [127.0.0.1] Warning: ARC-FAIL
+1999-03-02 09:44:33 10HmbT-0005vi-00 arc_state:      <none>
+1999-03-02 09:44:33 10HmbT-0005vi-00 domains:        <>
+1999-03-02 09:44:33 10HmbT-0005vi-00 arc_oldest_pass <0>
+1999-03-02 09:44:33 10HmbT-0005vi-00 reason:         <>
+1999-03-02 09:44:33 10HmbT-0005vi-00 lh_A-R:         <>
+1999-03-02 09:44:33 10HmbT-0005vi-00 lh-ams:         <>
+1999-03-02 09:44:33 10HmbT-0005vi-00 oldest-p-ams:   <>
+1999-03-02 09:44:33 10HmbT-0005vi-00 <= CALLER@bloggs.com H=(xxx) [127.0.0.1] P=smtp S=sss for a@test.ex
index 63b432784962af7ea12bab0f1ef5643db7c722ee..8f9735fe208e74cbf36e8d487b4356d977f84349 100644 (file)
@@ -479,3 +479,23 @@ http://lists.dmarc.org/mailman/listinfo/arc-discuss
 
 --===============2728806607597782871==--
 
+From CALLER@bloggs.com Tue Mar 02 09:44:33 1999
+Authentication-Results: test.ex;
+       iprev=pass (localhost) smtp.client-ip=127.0.0.1;
+       arc=none
+Received: from localhost ([127.0.0.1] helo=test.ex)
+       by test.ex with esmtp (Exim x.yz)
+       (envelope-from <CALLER@bloggs.com>)
+       id 10HmbS-0005vi-00
+       for a@test.ex; Tue, 2 Mar 1999 09:44:33 +0000
+Authentication-Results: test.ex;
+       arc=none
+Received: from [127.0.0.1] (helo=xxx)
+       by test.ex with smtp (Exim x.yz)
+       (envelope-from <CALLER@bloggs.com>)
+       id 10HmbR-0005vi-00
+       for za@test.ex; Tue, 2 Mar 1999 09:44:33 +0000
+Subject: Test
+
+This is a test body.
+
index 1a0086f474bd85a6f293652b5877209c7786e1e2..e6fba7154c4c33f18b2c958d9ed1f223d1431fe1 100644 (file)
@@ -388,6 +388,40 @@ exim -DSERVER=server -DNOTDAEMON -q
 ****
 #
 #
+# Check attemtping to sign, with a missing keyfile
+# It starts off bare, so the forwarder reception gets an ARC status of "none".
+# The outbound tries to sign it with that.
+#
+client 127.0.0.1 PORT_D
+??? 220
+HELO xxx
+??? 250
+MAIL FROM:<CALLER@bloggs.com>
+??? 250
+RCPT TO:<za@test.ex>
+??? 250
+DATA
+??? 354
+Subject: Test
+
+This is a test body.
+.
+??? 250
+QUIT
+??? 221
+****
+#
+exim -DSERVER=server -DNOTDAEMON -DBAD -q
+****
+exim -DSERVER=server -DNOTDAEMON -q
+****
+#
+#
+#
+#
+#
+#
+#
 #
 killdaemon
 #