ph10 2006/10/23 11:55:10 BST
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src smtp_in.c
Added files:
exim-test/confs 0541
exim-test/scripts/0000-Basic 0541
exim-test/stdout 0541
Log:
Fix crash for verify=helo when no IP address (-bs).
Revision Changes Path
1.412 +4 -0 exim/exim-doc/doc-txt/ChangeLog
1.46 +11 -1 exim/exim-src/src/smtp_in.c
1.1 +25 -0 exim/exim-test/confs/0541 (new)
1.1 +5 -0 exim/exim-test/scripts/0000-Basic/0541 (new)
1.1 +3 -0 exim/exim-test/stdout/0541 (new)
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.411
retrieving revision 1.412
diff -u -r1.411 -r1.412
--- ChangeLog 18 Oct 2006 08:55:37 -0000 1.411
+++ ChangeLog 23 Oct 2006 10:55:10 -0000 1.412
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.411 2006/10/18 08:55:37 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.412 2006/10/23 10:55:10 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -157,6 +157,10 @@
PH/23 Testing for tls_required and lost_connection in a retry rule didn't work
if any retry times were supplied.
+
+PH/24 Exim crashed if verify=helo was activated during an incoming -bs
+ connection, where there is no client IP address to check. In this
+ situation, the verify now always succeeds.
Exim version 4.63
Index: smtp_in.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/smtp_in.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- smtp_in.c 9 Oct 2006 14:36:25 -0000 1.45
+++ smtp_in.c 23 Oct 2006 10:55:10 -0000 1.46
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/smtp_in.c,v 1.45 2006/10/09 14:36:25 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/smtp_in.c,v 1.46 2006/10/23 10:55:10 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -2054,6 +2054,16 @@
HDEBUG(D_receive) debug_printf("no EHLO/HELO command was issued\n");
}
+/* Deal with the case of -bs without an IP address */
+
+else if (sender_host_address == NULL)
+ {
+ HDEBUG(D_receive) debug_printf("no client IP address: assume success\n");
+ helo_verified = TRUE;
+ }
+
+/* Deal with the more common case when there is a sending IP address */
+
else if (sender_helo_name[0] == '[')
{
helo_verified = Ustrncmp(sender_helo_name+1, sender_host_address,
@@ -2139,7 +2149,7 @@
}
}
-if (!helo_verified) helo_verify_failed = FALSE; /* We've tried ... */
+if (!helo_verified) helo_verify_failed = TRUE; /* We've tried ... */
return yield;
}
Index: 0541
====================================================================
# Exim test configuration 0541
exim_path = EXIM_PATH
host_lookup_order = bydns
primary_hostname = myhost.test.ex
rfc1413_query_timeout = 0s
spool_directory = DIR/spool
log_file_path = DIR/spool/log/%slog
gecos_pattern = ""
gecos_name = CALLER_NAME
# ----- Main settings -----
acl_smtp_helo = check_helo
# ----- ACLs -----
begin acl
check_helo:
require verify = helo
accept
# End
Index: 0541
====================================================================
# verify=helo with no IP address
exim -bs
helo a.b.c.d
quit
****
Index: 0541
====================================================================
220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
250 myhost.test.ex Hello CALLER at a.b.c.d
221 myhost.test.ex closing connection