summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail
diff options
context:
space:
mode:
authorgshapiro <gshapiro@FreeBSD.org>2008-08-28 06:08:29 +0000
committergshapiro <gshapiro@FreeBSD.org>2008-08-28 06:08:29 +0000
commitb1e5c9c5e51c0569a82ee5838ed755e3c7bae94f (patch)
tree45eaace561ffa22220b192fa6cc9bd930b44ffb6 /contrib/sendmail
parentdb890a1eb5b814a0367ca9de9f9a8f211f1231e7 (diff)
downloadFreeBSD-src-b1e5c9c5e51c0569a82ee5838ed755e3c7bae94f.zip
FreeBSD-src-b1e5c9c5e51c0569a82ee5838ed755e3c7bae94f.tar.gz
Merge sendmail 8.14.3 into HEAD.
Note: As the first merge since the conversion to svn, it includes many propset changes to get the proper svn:eol-style and svn:mime-type on the files (as merged from the fixed up vendor/dist area). MFC after: 3 days
Diffstat (limited to 'contrib/sendmail')
-rw-r--r--contrib/sendmail/KNOWNBUGS13
-rw-r--r--contrib/sendmail/PGPKEYS65
-rw-r--r--contrib/sendmail/README4
-rw-r--r--contrib/sendmail/RELEASE_NOTES40
-rw-r--r--contrib/sendmail/cf/README6
-rw-r--r--contrib/sendmail/cf/cf/submit.cf8
-rw-r--r--contrib/sendmail/cf/m4/proto.m412
-rw-r--r--contrib/sendmail/cf/m4/version.m46
-rw-r--r--contrib/sendmail/include/libmilter/mfapi.h6
-rw-r--r--contrib/sendmail/libmilter/Makefile.m42
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_opensocket.html22
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_version.html24
-rw-r--r--contrib/sendmail/libmilter/engine.c9
-rw-r--r--contrib/sendmail/libmilter/worker.c6
-rw-r--r--contrib/sendmail/mail.local/mail.local.c31
-rw-r--r--contrib/sendmail/makemap/makemap.87
-rw-r--r--contrib/sendmail/makemap/makemap.c7
-rw-r--r--contrib/sendmail/smrsh/README10
-rw-r--r--contrib/sendmail/smrsh/smrsh.c1
-rw-r--r--contrib/sendmail/src/Makefile.m42
-rw-r--r--contrib/sendmail/src/README8
-rw-r--r--contrib/sendmail/src/collect.c5
-rw-r--r--contrib/sendmail/src/conf.c24
-rw-r--r--contrib/sendmail/src/conf.h3
-rw-r--r--contrib/sendmail/src/daemon.c18
-rw-r--r--contrib/sendmail/src/envelope.c16
-rw-r--r--contrib/sendmail/src/err.c1
-rw-r--r--contrib/sendmail/src/headers.c1
-rw-r--r--contrib/sendmail/src/mailq.11
-rw-r--r--contrib/sendmail/src/main.c14
-rw-r--r--contrib/sendmail/src/mci.c30
-rw-r--r--contrib/sendmail/src/parseaddr.c9
-rw-r--r--contrib/sendmail/src/queue.c8
-rw-r--r--contrib/sendmail/src/ratectrl.c4
-rw-r--r--contrib/sendmail/src/readcf.c20
-rw-r--r--contrib/sendmail/src/savemail.c2
-rw-r--r--contrib/sendmail/src/sendmail.h20
-rw-r--r--contrib/sendmail/src/sfsasl.c28
-rw-r--r--contrib/sendmail/src/sm_resolve.c6
-rw-r--r--contrib/sendmail/src/srvrsmtp.c53
-rw-r--r--contrib/sendmail/src/usersmtp.c5
-rw-r--r--contrib/sendmail/src/util.c9
-rw-r--r--contrib/sendmail/src/version.c6
43 files changed, 416 insertions, 156 deletions
diff --git a/contrib/sendmail/KNOWNBUGS b/contrib/sendmail/KNOWNBUGS
index 6c7adb1..998fb11 100644
--- a/contrib/sendmail/KNOWNBUGS
+++ b/contrib/sendmail/KNOWNBUGS
@@ -47,6 +47,17 @@ This list is not guaranteed to be complete.
but some characters might be lost. Fix: obey RFC (2)822 and do not
send lines that are longer than 1000 characters.
+* milter communication fails if a single header is larger than 64K.
+
+ If a single header is larger than 64KB (which is not possible in the
+ default configuration) then it cannot be transferred in one block to
+ libmilter and hence the communication fails. This can be avoided by
+ increasing the constant MILTER_CHUNK_SIZE in
+ include/libmilter/mfdef.h and recompiling sendmail, libmilter, and
+ all (statically linked) milters (or by using an undocumented compile
+ time option: _FFR_MAXDATASIZE; you have to read the source code in
+ order to use this properly).
+
* Sender addresses whose domain part cause a temporary A record lookup
failure but have a valid MX record will be temporarily rejected in
the default configuration. Solution: fix the DNS at the sender side.
@@ -247,4 +258,4 @@ Kresolve sequence dnsmx canon
be used if set instead of LOCAL_RELAY ($R). This will be fixed in a
future version.
-$Revision: 8.59 $, Last updated $Date: 2007/02/21 23:13:58 $
+$Revision: 8.60 $, Last updated $Date: 2007/12/04 01:16:50 $
diff --git a/contrib/sendmail/PGPKEYS b/contrib/sendmail/PGPKEYS
index a6d7f5e..3f7e922 100644
--- a/contrib/sendmail/PGPKEYS
+++ b/contrib/sendmail/PGPKEYS
@@ -142,6 +142,69 @@ gpExpdV7qPrw9k01j5rod5PjZlG8zV0=
-----END PGP PUBLIC KEY BLOCK-----
Type Bits KeyID Created Expires Algorithm Use
+pub 1024 0xF6B30729 2008-01-18 ---------- RSA Sign & Encrypt
+f16 Fingerprint16 = 07 FB 9A F9 F7 94 4B E4 0F 28 D1 8E 23 6F A2 B0
+uid Sendmail Signing Key/2008 <sendmail@Sendmail.ORG>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.8 (Darwin)
+
+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
+5282RCnsKroyWAhV8KjoJer1hTKCsu58Lqrv
+=jDs3
+-----END PGP PUBLIC KEY BLOCK-----
+
+Type Bits KeyID Created Expires Algorithm Use
pub 1024 0x7093B841 2006-12-16 ---------- RSA Sign & Encrypt
f16 Fingerprint16 = D9 FD C5 6B EE 1E 7A A8 CE 27 D9 B9 55 8B 56 B6
uid Sendmail Signing Key/2007 <sendmail@Sendmail.ORG>
@@ -1729,4 +1792,4 @@ DnF3FZZEzV7oqPwC2jzv/1dD6GFhtgy0cnyoPGUJCyc=
=nES8
-----END PGP PUBLIC KEY BLOCK-----
-$Revision: 8.25 $, Last updated $Date: 2007/01/02 22:38:08 $
+$Revision: 8.26 $, Last updated $Date: 2008/01/22 06:20:27 $
diff --git a/contrib/sendmail/README b/contrib/sendmail/README
index b0c25e5..a8db162 100644
--- a/contrib/sendmail/README
+++ b/contrib/sendmail/README
@@ -312,7 +312,7 @@ nicer to animals and plants. If the Berkeley DB include files
are installed in a location other than those which your compiler searches,
you will need to provide that directory when building:
- Build -I/path/to/include/directory
+ ./Build -I/path/to/include/directory
If you are using Berkeley DB versions 1.85 or 1.86, you are *strongly*
urged to upgrade to DB version 2 or later, available from
@@ -464,4 +464,4 @@ sendmail Source for the sendmail program itself.
test Some test scripts (currently only for compilation aids).
vacation Source for the vacation program. NOT PART OF SENDMAIL!
-$Revision: 8.93 $, Last updated $Date: 2005/09/16 20:08:50 $
+$Revision: 8.94 $, Last updated $Date: 2008/02/12 16:40:05 $
diff --git a/contrib/sendmail/RELEASE_NOTES b/contrib/sendmail/RELEASE_NOTES
index 8a0b51c..0d8ed86 100644
--- a/contrib/sendmail/RELEASE_NOTES
+++ b/contrib/sendmail/RELEASE_NOTES
@@ -1,11 +1,47 @@
SENDMAIL RELEASE NOTES
- $Id: RELEASE_NOTES,v 8.1909 2007/10/31 16:04:13 ca Exp $
+ $Id: RELEASE_NOTES,v 8.1926 2008/05/03 03:34:26 ca Exp $
This listing shows the version of the sendmail binary, the version
of the sendmail configuration files, the date of release, and a
summary of the changes in that release.
+8.14.3/8.14.3 2008/05/03
+ During ruleset processing the generation of a key for a map
+ lookup and the parsing of the default value was broken
+ for some macros, e.g., $|, which caused the BlankSub
+ character to be inserted into the workspace and thus
+ failures, e.g., rules that should have matched did not.
+ 8.14.2 caused a regression: it accessed (macro) storage which was
+ freed before. First instance of the problem reported by
+ Matthew Dillon of DragonFlyBSD; variations of the same
+ bug reported by Todd C. Miller of OpenBSD, Moritz
+ Jodeit, and Dave Hayes.
+ Improve pathname length checks for persistent host status. Patch
+ from Joerg Sonnenberger of DragonFlyBSD.
+ Reword misleading SMTP reply text for FEATURE(`badmx'). Problem
+ noted by Beth Halsema.
+ The read timeout was fixed to be Timeout.datablock if STARTTLS
+ was activated. This may cause problems if that value
+ is lowered from its default. Problem noted by Jens Elkner.
+ CONFIG: Using LOCAL_TLS_CLIENT caused the tls_client ruleset
+ to operate incorrectly. Problem found by Werner Wiethege.
+ LIBMILTER: Omitting some protocol steps via the xxfi_negotiate()
+ callback did not work properly. The patchlevel of
+ libmilter has been set to 1 so a milter can determine
+ whether libmilter contains this fix.
+ MAKEMAP: If a delimiter is specified (-t) use that also when
+ dumping a map. Patch from Todd C. Miller of OpenBSD.
+ Portability:
+ Add support for Darwin 9.x (Mac OS X 10.5).
+ Support shared libraries in Darwin 8 and 9. Patch from
+ Chris Behrens of Concentric.
+ Add support for SCO OpenServer 6, patch from Boyd Gerber.
+ DEVTOOLS: Clarify that confSHAREDLIBDIR requires a trailing path.
+ Added Files:
+ devtools/OS/Darwin.9.x
+ devtools/OS/OSR.i386
+
8.14.2/8.14.2 2007/11/01
If a message was queued and it contained 8 bit characters in
a From: or To: header, then those characters could be
@@ -24,7 +60,7 @@ summary of the changes in that release.
Prior to 8.14 this happened only if milter could delete
recipients.
ClientRate should trigger when the limit was exceeded (as
- documented), not when it was reached. Patch from
+ documented), not when it was reached. Patch from
John Beck of Sun Microsystems.
Force a queue run for -qGqueuegroup even if no runners are
specified (R=0) and forking (F=f) is requested.
diff --git a/contrib/sendmail/cf/README b/contrib/sendmail/cf/README
index 81689ad..43737f6 100644
--- a/contrib/sendmail/cf/README
+++ b/contrib/sendmail/cf/README
@@ -1008,7 +1008,9 @@ virtusertable A domain-specific form of aliasing, allowing multiple
MASQUERADE_DOMAIN_FILE, see below). If VIRTUSER_DOMAIN or
VIRTUSER_DOMAIN_FILE is used, then the entries of class
{VirtHost} are added to class {R}, i.e., relaying is allowed
- to (and from) those domains. The default map definition is:
+ to (and from) those domains, which by default includes also
+ all subdomains (see relay_hosts_only). The default map
+ definition is:
hash /etc/mail/virtusertable
@@ -4699,4 +4701,4 @@ M4 DIVERSIONS
8 DNS based blacklists
9 special local rulesets (1 and 2)
-$Revision: 8.722 $, Last updated $Date: 2007/04/03 21:26:58 $
+$Revision: 8.724 $, Last updated $Date: 2008/02/15 23:05:32 $
diff --git a/contrib/sendmail/cf/cf/submit.cf b/contrib/sendmail/cf/cf/submit.cf
index 22a574c..11f3820 100644
--- a/contrib/sendmail/cf/cf/submit.cf
+++ b/contrib/sendmail/cf/cf/submit.cf
@@ -16,8 +16,8 @@
#####
##### SENDMAIL CONFIGURATION FILE
#####
-##### built by ca@nother.smi.sendmail.com on Wed Oct 31 09:24:27 PDT 2007
-##### in /extra/home/ca/sm-8.14.2/OpenSource/sendmail-8.14.2/cf/cf
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:39:00 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
##### using ../ as configuration include directory
#####
######################################################################
@@ -35,7 +35,7 @@
##### $Id: no_default_msa.m4,v 8.2 2001/02/14 05:03:22 gshapiro Exp $ #####
-##### $Id: proto.m4,v 8.732 2007/04/20 00:53:30 ca Exp $ #####
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
# level 10 config file format
V10/Berkeley
@@ -114,7 +114,7 @@ D{MTAHost}[127.0.0.1]
# Configuration version number
-DZ8.14.2/Submit
+DZ8.14.3/Submit
###############
diff --git a/contrib/sendmail/cf/m4/proto.m4 b/contrib/sendmail/cf/m4/proto.m4
index 6ef2f1c..4e314b3 100644
--- a/contrib/sendmail/cf/m4/proto.m4
+++ b/contrib/sendmail/cf/m4/proto.m4
@@ -13,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`$Id: proto.m4,v 8.732 2007/04/20 00:53:30 ca Exp $')
+VERSIONID(`$Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $')
# level CF_LEVEL config file format
V`'CF_LEVEL/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley')
@@ -1956,7 +1956,7 @@ R<MX><$+><:$*<TEMP>:><$*> $#error $@ 4.1.2 $: "450 MX lookup failure for "$1
# Recursively run badmx check on each mx.
R<MX><$*><:$+:$*><:$*> <MX><$1><:$3><: $4 $(badmx $2 $):>
# See if any of them fail.
-R<MX><$*><$*><$*<BADMX>:$*> $#error $@ 5.1.2 $:"550 Illegal MX record for recipient host "$1
+R<MX><$*><$*><$*<BADMX>:$*> $#error $@ 5.1.2 $:"550 Illegal MX record for host "$1
# Reverse the mxlists so we can use the same argument order again.
R<MX><$*><$*><$*> $:<MX><$1><$3><$2>
R<MX><$*><:$+:$*><:$*> <MX><$1><:$3><:$4 $(dnsA $2 $) :>
@@ -1965,7 +1965,7 @@ R<MX><$*><:$+:$*><:$*> <MX><$1><:$3><:$4 $(dnsA $2 $) :>
R<MX><$*><$*><$*> $:<MX><$1><$3><$2>
R<MX><$*><:$+:$*><:$*> <MX><$1><:$3><:$4 $(BadMXIP $2 $) :>
-R<MX><$*><$*><$*<BADMXIP>:$*> $#error $@ 5.1.2 $:"550 Invalid MX record for recipient host "$1',
+R<MX><$*><$*><$*<BADMXIP>:$*> $#error $@ 5.1.2 $:"550 Invalid MX record for host "$1',
`dnl')
@@ -2686,9 +2686,9 @@ dnl MAIL: called from check_mail
dnl STARTTLS: called from smtp() after STARTTLS has been accepted
Stls_client
ifdef(`_LOCAL_TLS_CLIENT_', `dnl
-R$* $: $1 $| $>"Local_tls_client" $1
-R$* $| $#$* $#$2
-R$* $| $* $: $1', `dnl')
+R$* $: $1 <?> $>"Local_tls_client" $1
+R$* <?> $#$* $#$2
+R$* <?> $* $: $1', `dnl')
ifdef(`_ACCESS_TABLE_', `dnl
dnl store name of other side
R$* $: $(macro {TLS_Name} $@ $&{server_name} $) $1
diff --git a/contrib/sendmail/cf/m4/version.m4 b/contrib/sendmail/cf/m4/version.m4
index 9b34f1a..bd722ac 100644
--- a/contrib/sendmail/cf/m4/version.m4
+++ b/contrib/sendmail/cf/m4/version.m4
@@ -1,6 +1,6 @@
divert(-1)
#
-# Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
+# Copyright (c) 1998-2008 Sendmail, Inc. and its suppliers.
# All rights reserved.
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
@@ -11,8 +11,8 @@ divert(-1)
# the sendmail distribution.
#
#
-VERSIONID(`$Id: version.m4,v 8.186 2007/10/31 16:04:13 ca Exp $')
+VERSIONID(`$Id: version.m4,v 8.195 2008/04/17 17:04:30 ca Exp $')
#
divert(0)
# Configuration version number
-DZ8.14.2`'ifdef(`confCF_VERSION', `/confCF_VERSION')
+DZ8.14.3`'ifdef(`confCF_VERSION', `/confCF_VERSION')
diff --git a/contrib/sendmail/include/libmilter/mfapi.h b/contrib/sendmail/include/libmilter/mfapi.h
index 4338645..7d7fb1d 100644
--- a/contrib/sendmail/include/libmilter/mfapi.h
+++ b/contrib/sendmail/include/libmilter/mfapi.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999-2004, 2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1999-2004, 2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -7,7 +7,7 @@
* the sendmail distribution.
*
*
- * $Id: mfapi.h,v 8.77 2006/11/02 02:44:07 ca Exp $
+ * $Id: mfapi.h,v 8.78 2008/02/27 22:30:34 ca Exp $
*/
/*
@@ -18,7 +18,7 @@
# define _LIBMILTER_MFAPI_H 1
#ifndef SMFI_VERSION
-# define SMFI_VERSION 0x01000000 /* libmilter version number */
+# define SMFI_VERSION 0x01000001 /* libmilter version number */
#endif /* ! SMFI_VERSION */
#define SM_LM_VRS_MAJOR(v) (((v) & 0x7f000000) >> 24)
diff --git a/contrib/sendmail/libmilter/Makefile.m4 b/contrib/sendmail/libmilter/Makefile.m4
index 7902c2f..929ec75 100644
--- a/contrib/sendmail/libmilter/Makefile.m4
+++ b/contrib/sendmail/libmilter/Makefile.m4
@@ -1,4 +1,4 @@
-dnl $Id: Makefile.m4,v 8.78 2007/02/05 19:21:29 ca Exp $
+dnl $Id: Makefile.m4,v 8.80 2008/04/08 05:23:44 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
dnl only required for compilation of EXTRAS
diff --git a/contrib/sendmail/libmilter/docs/smfi_opensocket.html b/contrib/sendmail/libmilter/docs/smfi_opensocket.html
index 151af07..53ea62b 100644
--- a/contrib/sendmail/libmilter/docs/smfi_opensocket.html
+++ b/contrib/sendmail/libmilter/docs/smfi_opensocket.html
@@ -2,7 +2,7 @@
<HEAD><TITLE>smfi_opensocket</TITLE></HEAD>
<BODY>
<!--
-$Id: smfi_opensocket.html,v 1.6 2006/12/21 18:30:35 ca Exp $
+$Id: smfi_opensocket.html,v 1.7 2008/01/31 17:29:33 ca Exp $
-->
<H1>smfi_opensocket</H1>
@@ -24,16 +24,21 @@ filter.
<TABLE border="1" cellspacing=1 cellpadding=4>
<TR align="left" valign=top>
<TH width="80">Called When</TH>
-<TD>Called only from program mainline, before calling
-<TT>smfi_main()</TT>.</TD>
+<TD>Called only from program mainline,
+after calling <TT>smfi_setconn()</TT> and <TT>smfi_register()</TT>,
+but before calling <TT>smfi_main()</TT>.
+</TD>
</TR>
<TR align="left" valign=top>
<TH width="80">Effects</TH>
<TD>smfi_opensocket attempts to create the socket specified previously by
a call to <TT>smfi_setconn()</TT> which will be the interface between MTAs
-and the filter. This allows the calling application to ensure that the
-socket can be created. If this is not called, <TT>smfi_main()</TT> will
-do so implicitly. </TD>
+and the filter.
+This allows the calling application to ensure that the
+socket can be created.
+If this is not called,
+<TT>smfi_main()</TT> will do so implicitly.
+</TD>
</TR>
</TABLE>
@@ -58,7 +63,8 @@ do so implicitly. </TD>
<LI>The interface socket could not be created for any reason.
<LI><TT>rmsocket</TT> was <TT>true</TT>, and either the socket could
not be examined, or exists and could not be removed.
- <LI><TT>smfi_setconn()</TT> has not been called.
+ <LI><TT>smfi_setconn()</TT> or <TT>smfi_register()</TT>
+ have not been called.
</UL>
Otherwise, it will return MI_SUCCESS
</TD>
@@ -68,7 +74,7 @@ Otherwise, it will return MI_SUCCESS
<HR size="1">
<FONT size="-1">
-Copyright (c) 2003 Sendmail, Inc. and its suppliers.
+Copyright (c) 2003, 2008 Sendmail, Inc. and its suppliers.
All rights reserved.
<BR>
By using this file, you agree to the terms and conditions set
diff --git a/contrib/sendmail/libmilter/docs/smfi_version.html b/contrib/sendmail/libmilter/docs/smfi_version.html
index 3c1fc05..6dd451d 100644
--- a/contrib/sendmail/libmilter/docs/smfi_version.html
+++ b/contrib/sendmail/libmilter/docs/smfi_version.html
@@ -2,7 +2,7 @@
<HEAD><TITLE>smfi_version()</TITLE></HEAD>
<BODY>
<!--
-$Id: smfi_version.html,v 1.5 2007/03/22 17:30:57 ca Exp $
+$Id: smfi_version.html,v 1.6 2008/05/02 23:06:26 ca Exp $
-->
<H1>smfi_version()</H1>
@@ -59,24 +59,30 @@ Get the (runtime) version of libmilter.
Note: the compile time version of libmilter is available in the macro
<CODE>SMFI_VERSION</CODE>.
-A milter can check this macro to determine which functions to use
-(at compile time via C preprocessor statements).
-Using this macro and the
-<CODE>smfi_version()</CODE>
-function,
-a milter can determine at runtime whether it has been (dynamically)
-linked against the expected libmilter version.
To extract the major and minor version as well as the current patch level
from this macro, the macros
<CODE>SM_LM_VRS_MAJOR(v)</CODE>,
<CODE>SM_LM_VRS_MINOR(v)</CODE>, and
<CODE>SM_LM_VRS_PLVL(v)</CODE>
can be used, respectively.
+A milter can check the
+<CODE>SMFI_VERSION</CODE>
+macro to determine which functions to use
+(at compile time via C preprocessor statements).
+Using this macro and the
+<CODE>smfi_version()</CODE>
+function,
+a milter can determine at runtime whether it has been (dynamically)
+linked against the expected libmilter version.
+Such a function should only compare the major and minor version,
+not the patch level,
+i.e., the libmilter library will be compatible despite
+different patch levels.
<HR SIZE="1">
<FONT SIZE="-1">
-Copyright (c) 2006, 2007 Sendmail, Inc. and its suppliers.
+Copyright (c) 2006-2008 Sendmail, Inc. and its suppliers.
All rights reserved.
<BR>
By using this file, you agree to the terms and conditions set
diff --git a/contrib/sendmail/libmilter/engine.c b/contrib/sendmail/libmilter/engine.c
index a024312..9002a0b 100644
--- a/contrib/sendmail/libmilter/engine.c
+++ b/contrib/sendmail/libmilter/engine.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999-2004, 2006, 2007 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1999-2004, 2006-2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: engine.c,v 8.159 2007/04/23 22:22:50 ca Exp $")
+SM_RCSID("@(#)$Id: engine.c,v 8.162 2008/02/27 01:34:14 ca Exp $")
#include "libmilter.h"
@@ -1001,6 +1001,7 @@ st_optionneg(g)
(long) ctx->ctx_id, ctx->ctx_mta_pflags, i);
return _SMFIS_ABORT;
}
+ fix_stm(ctx);
if (ctx->ctx_dbg > 3)
sm_dprintf("[%ld] milter_negotiate:"
@@ -1725,9 +1726,9 @@ mi_rd_socket_ready (sd)
int n;
int nerr = 0;
#if SM_CONF_POLL
- struct pollfd pfd;
+ struct pollfd pfd;
#else /* SM_CONF_POLL */
- fd_set rd_set, exc_set;
+ fd_set rd_set, exc_set;
#endif /* SM_CONF_POLL */
do
diff --git a/contrib/sendmail/libmilter/worker.c b/contrib/sendmail/libmilter/worker.c
index 0402678..fd4b66e 100644
--- a/contrib/sendmail/libmilter/worker.c
+++ b/contrib/sendmail/libmilter/worker.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003-2004, 2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 2003-2004, 2007 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -11,7 +11,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: worker.c,v 8.9 2006/12/18 18:26:51 ca Exp $")
+SM_RCSID("@(#)$Id: worker.c,v 8.10 2007/12/03 22:06:05 ca Exp $")
#include "libmilter.h"
@@ -263,8 +263,6 @@ mi_pool_controller_init()
return MI_FAILURE;
}
- POOL_LEV_DPRINTF(4, ("PIPE r=[%d] w=[%d]", RD_PIPE, WR_PIPE));
-
(void) smutex_init(&Tskmgr.tm_w_mutex);
(void) scond_init(&Tskmgr.tm_w_cond);
diff --git a/contrib/sendmail/mail.local/mail.local.c b/contrib/sendmail/mail.local/mail.local.c
index cba40a7..e20d915 100644
--- a/contrib/sendmail/mail.local/mail.local.c
+++ b/contrib/sendmail/mail.local/mail.local.c
@@ -20,7 +20,7 @@ SM_IDSTR(copyright,
Copyright (c) 1990, 1993, 1994\n\
The Regents of the University of California. All rights reserved.\n")
-SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.254 2006/10/12 22:23:45 ca Exp $")
+SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.256 2008/02/19 07:13:30 gshapiro Exp $")
#include <stdlib.h>
#include <sm/errstring.h>
@@ -81,6 +81,15 @@ SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.254 2006/10/12 22:23:45 ca Exp $")
# endif /* HASHSPOOLMD5 */
#endif /* HASHSPOOL */
+#if _FFR_SPOOL_PATH
+ /*
+ ** Override path to mail store at run time (using -p).
+ ** From: Eugene Grosbein of Svyaz Service JSC
+ ** See: http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/114195
+ ** NOTE: Update man page before adding this to a release.
+ */
+#endif /* _FFR_SPOOL_PATH */
+
#ifndef LOCKTO_RM
# define LOCKTO_RM 300 /* timeout for stale lockfile removal */
@@ -231,7 +240,11 @@ main(argc, argv)
#if HASHSPOOL
while ((ch = getopt(argc, argv, "7BbdD:f:h:r:lH:p:ns")) != -1)
#else /* HASHSPOOL */
+# if _FFR_SPOOL_PATH
+ while ((ch = getopt(argc, argv, "7BbdD:f:h:r:lp:s")) != -1)
+# else /* _FFR_SPOOL_PATH */
while ((ch = getopt(argc, argv, "7BbdD:f:h:r:ls")) != -1)
+# endif /* _FFR_SPOOL_PATH */
#endif /* HASHSPOOL */
{
switch(ch)
@@ -319,6 +332,12 @@ main(argc, argv)
}
break;
+ case 'n':
+ StripRcptDomain = false;
+ break;
+#endif /* HASHSPOOL */
+
+#if HASHSPOOL || _FFR_SPOOL_PATH
case 'p':
if (optarg == NULL || *optarg == '\0')
{
@@ -332,11 +351,7 @@ main(argc, argv)
usage();
}
break;
-
- case 'n':
- StripRcptDomain = false;
- break;
-#endif /* HASHSPOOL */
+#endif /* HASHSPOOL || _FFR_SPOOL_PATH */
case '?':
default:
@@ -1582,7 +1597,11 @@ void
usage()
{
ExitVal = EX_USAGE;
+# if _FFR_SPOOL_PATH
+ mailerr(NULL, "usage: mail.local [-7] [-B] [-b] [-d] [-l] [-s] [-f from|-r from] [-h filename] [-p path] user ...");
+# else /* _FFR_SPOOL_PATH */
mailerr(NULL, "usage: mail.local [-7] [-B] [-b] [-d] [-l] [-s] [-f from|-r from] [-h filename] user ...");
+# endif /* _FFR_SPOOL_PATH */
sm_exit(ExitVal);
}
diff --git a/contrib/sendmail/makemap/makemap.8 b/contrib/sendmail/makemap/makemap.8
index 96338e7..ca8a949 100644
--- a/contrib/sendmail/makemap/makemap.8
+++ b/contrib/sendmail/makemap/makemap.8
@@ -8,9 +8,9 @@
.\" the sendmail distribution.
.\"
.\"
-.\" $Id: makemap.8,v 8.30 2002/06/27 23:41:04 gshapiro Exp $
+.\" $Id: makemap.8,v 8.31 2008/05/02 23:07:48 ca Exp $
.\"
-.TH MAKEMAP 8 "$Date: 2002/06/27 23:41:04 $"
+.TH MAKEMAP 8 "$Date: 2008/05/02 23:07:48 $"
.SH NAME
makemap
\- create database maps for sendmail
@@ -156,7 +156,8 @@ This includes checking for hard or symbolic
links in world writable directories.
.TP
.B \-t
-Use the specified delimiter instead of white space.
+Use the specified delimiter instead of white space
+(also for dumping a map).
.TP
.B \-u
dump (unmap) the content of the database to standard output.
diff --git a/contrib/sendmail/makemap/makemap.c b/contrib/sendmail/makemap/makemap.c
index 7302748..cacec00 100644
--- a/contrib/sendmail/makemap/makemap.c
+++ b/contrib/sendmail/makemap/makemap.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2002, 2004 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2002, 2004, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1992 Eric P. Allman. All rights reserved.
* Copyright (c) 1992, 1993
@@ -20,7 +20,7 @@ SM_IDSTR(copyright,
Copyright (c) 1992, 1993\n\
The Regents of the University of California. All rights reserved.\n")
-SM_IDSTR(id, "@(#)$Id: makemap.c,v 8.178 2007/05/11 18:45:39 ca Exp $")
+SM_IDSTR(id, "@(#)$Id: makemap.c,v 8.179 2008/04/14 02:06:16 ca Exp $")
#include <sys/types.h>
@@ -378,9 +378,10 @@ main(argc, argv)
break;
(void) sm_io_fprintf(smioout, SM_TIME_DEFAULT,
- "%.*s\t%.*s\n",
+ "%.*s%c%.*s\n",
(int) db_key.size,
(char *) db_key.data,
+ (sep != '\0') ? sep : '\t',
(int) db_val.size,
(char *)db_val.data);
diff --git a/contrib/sendmail/smrsh/README b/contrib/sendmail/smrsh/README
index 0719a3f..452b208 100644
--- a/contrib/sendmail/smrsh/README
+++ b/contrib/sendmail/smrsh/README
@@ -24,7 +24,7 @@ Unix C compilers.
smrsh should build on most systems with the enclosed Build script:
- host.domain% sh Build
+ host.domain% sh ./Build
To compile smrsh.c by hand, use the following command:
@@ -36,13 +36,13 @@ compiler, you should compile with the -Bstatic option.
host.domain% cc -Bstatic -o smrsh smrsh.c
or
- host.domain% sh Build LDOPTS=-Bstatic
+ host.domain% sh ./Build LDOPTS=-Bstatic
With gcc, the GNU C compiler, use the -static option.
host.domain% cc -static -o smrsh smrsh.c
or
- host.domain% sh Build LDOPTS=-static
+ host.domain% sh ./Build LDOPTS=-static
The following C defines can be set defined to change the search path and
the bin directory used by smrsh.
@@ -58,7 +58,7 @@ conf_smrsh_ENVDEF.
As root, install smrsh in /usr/libexec. Using the Build script:
- host.domain# sh Build install
+ host.domain# sh ./Build install
For manual installation: install smrsh in the /usr/libexec
directory, with mode 511.
@@ -163,4 +163,4 @@ a typical system follows:
host.domain# /usr/sbin/sendmail -bd -q30m
-$Revision: 8.9 $, Last updated $Date: 2003/05/26 04:30:58 $
+$Revision: 8.10 $, Last updated $Date: 2008/02/12 16:40:06 $
diff --git a/contrib/sendmail/smrsh/smrsh.c b/contrib/sendmail/smrsh/smrsh.c
index 69234b7..284ffef 100644
--- a/contrib/sendmail/smrsh/smrsh.c
+++ b/contrib/sendmail/smrsh/smrsh.c
@@ -9,7 +9,6 @@
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
- * $FreeBSD$
*/
#include <sm/gen.h>
diff --git a/contrib/sendmail/src/Makefile.m4 b/contrib/sendmail/src/Makefile.m4
index b2bfa1a..fd015b4 100644
--- a/contrib/sendmail/src/Makefile.m4
+++ b/contrib/sendmail/src/Makefile.m4
@@ -1,4 +1,4 @@
-dnl $Id: Makefile.m4,v 8.112 2007/10/17 21:29:43 ca Exp $
+dnl $Id: Makefile.m4,v 8.115 2008/03/27 16:13:33 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/src/README b/contrib/sendmail/src/README
index 2039674..34313fc 100644
--- a/contrib/sendmail/src/README
+++ b/contrib/sendmail/src/README
@@ -9,7 +9,7 @@
# the sendmail distribution.
#
#
-# $Id: README,v 8.390 2006/11/13 22:27:27 ca Exp $
+# $Id: README,v 8.391 2008/02/12 16:38:21 ca Exp $
#
This directory contains the source files for sendmail(TM).
@@ -41,7 +41,7 @@ Sendmail is a trademark of Sendmail, Inc.
By far, the easiest way to compile sendmail is to use the "Build"
script:
- sh Build
+ sh ./Build
This uses the "uname" command to figure out what architecture you are
on and creates a proper Makefile accordingly. It also creates a
@@ -52,7 +52,7 @@ read the note below in the OPERATING SYSTEM AND COMPILE QUIRKS section.
If you need to look at other include or library directories, use the
-I or -L flags on the command line, e.g.,
- sh Build -I/usr/sww/include -L/usr/sww/lib
+ sh ./Build -I/usr/sww/include -L/usr/sww/lib
It's also possible to create local site configuration in the file
site.config.m4 (or another file settable with the -f flag). This
@@ -1847,4 +1847,4 @@ util.c Some general purpose routines used by sendmail.
version.c The version number and information about this
version of sendmail.
-(Version $Revision: 8.390 $, last update $Date: 2006/11/13 22:27:27 $ )
+(Version $Revision: 8.391 $, last update $Date: 2008/02/12 16:38:21 $ )
diff --git a/contrib/sendmail/src/collect.c b/contrib/sendmail/src/collect.c
index 56fed0a..0a2cdab 100644
--- a/contrib/sendmail/src/collect.c
+++ b/contrib/sendmail/src/collect.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: collect.c,v 8.280 2006/11/29 00:20:40 ca Exp $")
+SM_RCSID("@(#)$Id: collect.c,v 8.282 2008/01/31 18:48:29 ca Exp $")
static void eatfrom __P((char *volatile, ENVELOPE *));
static void collect_doheader __P((ENVELOPE *));
@@ -308,6 +308,7 @@ collect(fp, smtpmode, hdrp, e, rsetsize)
dbto = smtpmode ? ((int) TimeOuts.to_datablock * 1000)
: SM_TIME_FOREVER;
sm_io_setinfo(fp, SM_IO_WHAT_TIMEOUT, &dbto);
+ set_tls_rd_tmo(TimeOuts.to_datablock);
c = SM_IO_EOF;
inputerr = false;
headeronly = hdrp != NULL;
diff --git a/contrib/sendmail/src/conf.c b/contrib/sendmail/src/conf.c
index e892cef..bf97057 100644
--- a/contrib/sendmail/src/conf.c
+++ b/contrib/sendmail/src/conf.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -9,12 +9,11 @@
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
- * $FreeBSD$
*/
#include <sendmail.h>
-SM_RCSID("@(#)$Id: conf.c,v 8.1136 2007/10/10 00:06:45 ca Exp $")
+SM_RCSID("@(#)$Id: conf.c,v 8.1141 2008/04/14 02:09:35 ca Exp $")
#include <sm/sendmail.h>
#include <sendmail/pathnames.h>
@@ -1514,7 +1513,7 @@ getla()
sm_dprintf("getla: symbol address = %#lx\n",
(unsigned long) Nl[X_AVENRUN].n_value);
if (lseek(kmem, (off_t) Nl[X_AVENRUN].n_value, SEEK_SET) == -1 ||
- read(kmem, (char *) avenrun, sizeof(avenrun)) < sizeof(avenrun))
+ read(kmem, (char *) avenrun, sizeof(avenrun)) != sizeof(avenrun))
{
/* thank you Ian */
if (tTd(3, 1))
@@ -1836,7 +1835,7 @@ getla(void)
if (lseek(kmem, CAST_SYSMP(sysmp(MP_KERNADDR, MPKA_AVENRUN)), SEEK_SET)
== -1 ||
- read(kmem, (char *) avenrun, sizeof(avenrun)) < sizeof(avenrun))
+ read(kmem, (char *) avenrun, sizeof(avenrun)) != sizeof(avenrun))
{
if (tTd(3, 1))
sm_dprintf("getla: lseek or read: %s\n",
@@ -1944,6 +1943,13 @@ getla()
}
r = read(afd, &avenrun, sizeof(avenrun));
+ if (r != sizeof(avenrun))
+ {
+ sm_syslog(LOG_ERR, NOQID,
+ "can't read %s: %s", _PATH_AVENRUN,
+ r == -1 ? sm_errstring(errno) : "short read");
+ return -1;
+ }
if (tTd(3, 5))
sm_dprintf("getla: avenrun = %d\n", avenrun);
@@ -6025,6 +6031,10 @@ char *FFRCompileOptions[] =
/* DefaultAuthInfo doesn't really work in 8.13 anymore. */
"_FFR_ALLOW_SASLINFO",
#endif /* _FFR_ALLOW_SASLINFO */
+#if _FFR_BADRCPT_SHUTDOWN
+ /* shut down connection (421) if there are too many bad RCPTs */
+ "_FFR_BADRCPT_SHUTDOWN",
+#endif /* _FFR_BADRCPT_SHUTDOWN */
#if _FFR_BESTMX_BETTER_TRUNCATION
/* Better truncation of list of MX records for dns map. */
"_FFR_BESTMX_BETTER_TRUNCATION",
@@ -6165,6 +6175,10 @@ char *FFRCompileOptions[] =
/* Ignore extensions offered in response to HELO */
"_FFR_IGNORE_EXT_ON_HELO",
#endif /* _FFR_IGNORE_EXT_ON_HELO */
+#if _FFR_LOCAL_DAEMON
+ /* Local daemon mode (-bl) which only accepts loopback connections */
+ "_FFR_LOCAL_DAEMON",
+#endif /* _FFR_LOCAL_DAEMON */
#if _FFR_MAXDATASIZE
/*
** It is possible that a header is larger than MILTER_CHUNK_SIZE,
diff --git a/contrib/sendmail/src/conf.h b/contrib/sendmail/src/conf.h
index 99ed47d..f1386c4 100644
--- a/contrib/sendmail/src/conf.h
+++ b/contrib/sendmail/src/conf.h
@@ -11,9 +11,6 @@
*
*
* $Id: conf.h,v 8.574 2006/11/29 00:36:06 ca Exp $
- *
- * $FreeBSD$
- *
*/
/*
diff --git a/contrib/sendmail/src/daemon.c b/contrib/sendmail/src/daemon.c
index 76b5b58..06a36c7 100644
--- a/contrib/sendmail/src/daemon.c
+++ b/contrib/sendmail/src/daemon.c
@@ -14,7 +14,7 @@
#include <sendmail.h>
#include "map.h"
-SM_RCSID("@(#)$Id: daemon.c,v 8.678 2007/03/08 00:33:40 ca Exp $")
+SM_RCSID("@(#)$Id: daemon.c,v 8.680 2008/02/14 00:20:26 ca Exp $")
#if defined(SOCK_STREAM) || defined(__GNU_LIBRARY__)
# define USE_SOCK_STREAM 1
@@ -1257,7 +1257,8 @@ setupdaemon(daemonaddr)
#if NETINET
case AF_INET:
if (daemonaddr->sin.sin_addr.s_addr == 0)
- daemonaddr->sin.sin_addr.s_addr = INADDR_ANY;
+ daemonaddr->sin.sin_addr.s_addr =
+ LocalDaemon ? htonl(INADDR_LOOPBACK) : INADDR_ANY;
port = daemonaddr->sin.sin_port;
break;
#endif /* NETINET */
@@ -1265,7 +1266,8 @@ setupdaemon(daemonaddr)
#if NETINET6
case AF_INET6:
if (IN6_IS_ADDR_UNSPECIFIED(&daemonaddr->sin6.sin6_addr))
- daemonaddr->sin6.sin6_addr = in6addr_any;
+ daemonaddr->sin6.sin6_addr =
+ LocalDaemon ? in6addr_loopback : in6addr_any;
port = daemonaddr->sin6.sin6_port;
break;
#endif /* NETINET6 */
@@ -2204,7 +2206,8 @@ makeconnection(host, port, mci, e, enough)
#if NETINET
case AF_INET:
if (clt_addr.sin.sin_addr.s_addr == 0)
- clt_addr.sin.sin_addr.s_addr = INADDR_ANY;
+ clt_addr.sin.sin_addr.s_addr = LocalDaemon ?
+ htonl(INADDR_LOOPBACK) : INADDR_ANY;
else
clt_bind = true;
if (clt_addr.sin.sin_port != 0)
@@ -2215,7 +2218,8 @@ makeconnection(host, port, mci, e, enough)
#if NETINET6
case AF_INET6:
if (IN6_IS_ADDR_UNSPECIFIED(&clt_addr.sin6.sin6_addr))
- clt_addr.sin6.sin6_addr = in6addr_any;
+ clt_addr.sin6.sin6_addr = LocalDaemon ?
+ in6addr_loopback : in6addr_any;
else
clt_bind = true;
socksize = sizeof(struct sockaddr_in6);
@@ -3274,7 +3278,7 @@ myhostname(hostbuf, size)
if (strchr(hostbuf, '.') == NULL &&
!getcanonname(hostbuf, size, true, NULL))
{
- sm_syslog(LOG_CRIT, NOQID,
+ sm_syslog(LocalDaemon ? LOG_WARNING : LOG_CRIT, NOQID,
"My unqualified host name (%s) unknown; sleeping for retry",
hostbuf);
message("My unqualified host name (%s) unknown; sleeping for retry",
@@ -3282,7 +3286,7 @@ myhostname(hostbuf, size)
(void) sleep(60);
if (!getcanonname(hostbuf, size, true, NULL))
{
- sm_syslog(LOG_ALERT, NOQID,
+ sm_syslog(LocalDaemon ? LOG_WARNING : LOG_ALERT, NOQID,
"unable to qualify my own domain name (%s) -- using short name",
hostbuf);
message("WARNING: unable to qualify my own domain name (%s) -- using short name",
diff --git a/contrib/sendmail/src/envelope.c b/contrib/sendmail/src/envelope.c
index 20b0ba2..641c621a 100644
--- a/contrib/sendmail/src/envelope.c
+++ b/contrib/sendmail/src/envelope.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: envelope.c,v 8.304 2007/04/18 17:15:49 ca Exp $")
+SM_RCSID("@(#)$Id: envelope.c,v 8.305 2008/03/31 16:32:13 ca Exp $")
/*
** CLRSESSENVELOPE -- clear session oriented data in an envelope
@@ -75,7 +75,7 @@ newenvelope(e, parent, rpool)
register ENVELOPE *parent;
SM_RPOOL_T *rpool;
{
- int sendmode, dm;
+ int sendmode;
/*
** This code used to read:
@@ -86,16 +86,8 @@ newenvelope(e, parent, rpool)
** This meant macvalue() could go into an infinite loop.
*/
- dm = DM_NOTSET;
if (parent != NULL)
- {
- char *str;
-
sendmode = parent->e_sendmode;
- str = macvalue(macid("{deliveryMode}"), parent);
- if (str != NULL)
- dm = (int) str[0];
- }
else
sendmode = DM_NOTSET;
@@ -144,9 +136,7 @@ newenvelope(e, parent, rpool)
if (CurEnv->e_xfp != NULL)
(void) sm_io_flush(CurEnv->e_xfp, SM_TIME_DEFAULT);
if (sendmode != DM_NOTSET)
- e->e_sendmode = sendmode;
- if (dm != DM_NOTSET)
- set_delivery_mode(dm, e);
+ set_delivery_mode(sendmode, e);
return e;
}
diff --git a/contrib/sendmail/src/err.c b/contrib/sendmail/src/err.c
index 89b0736..5825666 100644
--- a/contrib/sendmail/src/err.c
+++ b/contrib/sendmail/src/err.c
@@ -9,7 +9,6 @@
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
- * $FreeBSD$
*/
#include <sendmail.h>
diff --git a/contrib/sendmail/src/headers.c b/contrib/sendmail/src/headers.c
index 7e223db..8e70fed 100644
--- a/contrib/sendmail/src/headers.c
+++ b/contrib/sendmail/src/headers.c
@@ -9,7 +9,6 @@
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
- * $FreeBSD$
*/
#include <sendmail.h>
diff --git a/contrib/sendmail/src/mailq.1 b/contrib/sendmail/src/mailq.1
index 6b2136f..62f123c 100644
--- a/contrib/sendmail/src/mailq.1
+++ b/contrib/sendmail/src/mailq.1
@@ -133,4 +133,3 @@ The
.B mailq
command appeared in
4.0BSD.
-.\" $FreeBSD$
diff --git a/contrib/sendmail/src/main.c b/contrib/sendmail/src/main.c
index 8680add..d68d5b5 100644
--- a/contrib/sendmail/src/main.c
+++ b/contrib/sendmail/src/main.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -26,7 +26,7 @@ SM_UNUSED(static char copyright[]) =
The Regents of the University of California. All rights reserved.\n";
#endif /* ! lint */
-SM_RCSID("@(#)$Id: main.c,v 8.963 2007/06/29 20:07:37 ca Exp $")
+SM_RCSID("@(#)$Id: main.c,v 8.967 2008/03/31 16:32:13 ca Exp $")
#if NETINET || NETINET6
@@ -302,6 +302,9 @@ main(argc, argv, envp)
ExitStat = EX_OK;
SubmitMode = SUBMIT_UNKNOWN;
+#if _FFR_LOCAL_DAEMON
+ LocalDaemon = false;
+#endif /* _FFR_LOCAL_DAEMON */
#if XDEBUG
checkfd012("after openlog");
#endif /* XDEBUG */
@@ -401,6 +404,13 @@ main(argc, argv, envp)
OpMode = j;
break;
+#if _FFR_LOCAL_DAEMON
+ case MD_LOCAL:
+ OpMode = MD_DAEMON;
+ LocalDaemon = true;
+ break;
+#endif /* _FFR_LOCAL_DAEMON */
+
case MD_FREEZE:
(void) sm_io_fprintf(smioout, SM_TIME_DEFAULT,
"Frozen configurations unsupported\n");
diff --git a/contrib/sendmail/src/mci.c b/contrib/sendmail/src/mci.c
index ef977440..2770117 100644
--- a/contrib/sendmail/src/mci.c
+++ b/contrib/sendmail/src/mci.c
@@ -9,12 +9,11 @@
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
- * $FreeBSD$
*/
#include <sendmail.h>
-SM_RCSID("@(#)$Id: mci.c,v 8.218 2006/08/15 23:24:57 ca Exp $")
+SM_RCSID("@(#)$Id: mci.c,v 8.221 2007/11/13 23:44:25 gshapiro Exp $")
#if NETINET || NETINET6
# include <arpa/inet.h>
@@ -1144,16 +1143,27 @@ mci_traverse_persistent(action, pathname)
pathname, sm_errstring(errno));
return -1;
}
- len = sizeof(newpath) - MAXNAMLEN - 3;
+
+ /*
+ ** Reserve space for trailing '/', at least one
+ ** character, and '\0'
+ */
+
+ len = sizeof(newpath) - 3;
if (sm_strlcpy(newpath, pathname, len) >= len)
{
+ int save_errno = errno;
+
if (tTd(56, 2))
sm_dprintf("mci_traverse: path \"%s\" too long",
pathname);
+ (void) closedir(d);
+ errno = save_errno;
return -1;
}
newptr = newpath + strlen(newpath);
*newptr++ = '/';
+ len = sizeof(newpath) - (newptr - newpath);
/*
** repeat until no file has been removed
@@ -1170,9 +1180,17 @@ mci_traverse_persistent(action, pathname)
if (e->d_name[0] == '.')
continue;
- (void) sm_strlcpy(newptr, e->d_name,
- sizeof(newpath) -
- (newptr - newpath));
+ if (sm_strlcpy(newptr, e->d_name, len) >= len)
+ {
+ /* Skip truncated copies */
+ if (tTd(56, 4))
+ {
+ *newptr = '\0';
+ sm_dprintf("mci_traverse: path \"%s%s\" too long",
+ newpath, e->d_name);
+ }
+ continue;
+ }
if (StopRequest)
stop_sendmail();
diff --git a/contrib/sendmail/src/parseaddr.c b/contrib/sendmail/src/parseaddr.c
index eca60f9..19bcf73 100644
--- a/contrib/sendmail/src/parseaddr.c
+++ b/contrib/sendmail/src/parseaddr.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: parseaddr.c,v 8.401 2007/09/27 23:33:59 ca Exp $")
+SM_RCSID("@(#)$Id: parseaddr.c,v 8.403 2008/02/08 02:27:35 ca Exp $")
#include <sm/sendmail.h>
#include "map.h"
@@ -1460,6 +1460,7 @@ rewrite(pvp, ruleset, reclevel, e, maxatom)
size_t trsize;
char *replac;
int endtoken;
+ bool external;
STAB *map;
char *mapname;
char **key_rvp;
@@ -1575,6 +1576,7 @@ rewrite(pvp, ruleset, reclevel, e, maxatom)
true);
argvect[0] = cbuf;
replac = map_lookup(map, cbuf, argvect, &rstat, e);
+ external = replac != NULL;
/* if no replacement, use default */
if (replac == NULL && default_rvp != NULL)
@@ -1599,7 +1601,8 @@ rewrite(pvp, ruleset, reclevel, e, maxatom)
{
/* scan the new replacement */
xpvp = prescan(replac, '\0', pvpbuf,
- sizeof(pvpbuf), NULL, NULL,
+ sizeof(pvpbuf), NULL,
+ external ? NULL : IntTokenTab,
false);
if (xpvp == NULL)
{
@@ -2263,7 +2266,7 @@ cataddr(pvp, evp, buf, sz, spacesub, external)
{
char *q;
- natomtok = (ExtTokenTab[**pvp & 0xff] == ATM);
+ natomtok = (IntTokenTab[**pvp & 0xff] == ATM);
if (oatomtok && natomtok)
{
*p++ = spacesub;
diff --git a/contrib/sendmail/src/queue.c b/contrib/sendmail/src/queue.c
index e80a035..d4c6369 100644
--- a/contrib/sendmail/src/queue.c
+++ b/contrib/sendmail/src/queue.c
@@ -14,7 +14,7 @@
#include <sendmail.h>
#include <sm/sem.h>
-SM_RCSID("@(#)$Id: queue.c,v 8.975 2007/06/18 20:08:40 ca Exp $")
+SM_RCSID("@(#)$Id: queue.c,v 8.977 2008/02/15 23:19:58 ca Exp $")
#include <dirent.h>
@@ -4514,7 +4514,7 @@ readqf(e, openonly)
(void) sm_io_close(qfp, SM_TIME_DEFAULT);
return false;
}
-
+
#if _FFR_QF_PARANOIA
/* Check to make sure key fields were read */
if (e->e_from.q_mailer == NULL)
@@ -6596,8 +6596,8 @@ init_sem(owner)
if (SemId < 0)
{
sm_syslog(LOG_ERR, NOQID,
- "func=init_sem, sem_key=%ld, sm_sem_start=%d",
- (long) SemKey, SemId);
+ "func=init_sem, sem_key=%ld, sm_sem_start=%d, error=%s",
+ (long) SemKey, SemId, sm_errstring(-SemId));
return;
}
#endif /* SM_CONF_SEM */
diff --git a/contrib/sendmail/src/ratectrl.c b/contrib/sendmail/src/ratectrl.c
index 22f9803..8b95b37 100644
--- a/contrib/sendmail/src/ratectrl.c
+++ b/contrib/sendmail/src/ratectrl.c
@@ -45,7 +45,7 @@
*/
#include <sendmail.h>
-SM_RCSID("@(#)$Id: ratectrl.c,v 8.11 2006/08/15 23:24:57 ca Exp $")
+SM_RCSID("@(#)$Id: ratectrl.c,v 8.12 2008/02/11 22:56:05 ca Exp $")
/*
** stuff included - given some warnings (inet_ntoa)
@@ -114,7 +114,7 @@ connection_rate_check(hostaddr, e)
/* update server connection rate */
totalrate = total_rate(now, e == NULL);
#if RATECTL_DEBUG
- sm_syslog(LOG_INFO, NOQID, "global connection rate: %d", globalRate);
+ sm_syslog(LOG_INFO, NOQID, "global connection rate: %d", totalrate);
#endif /* RATECTL_DEBUG */
/* update client connection rate */
diff --git a/contrib/sendmail/src/readcf.c b/contrib/sendmail/src/readcf.c
index 0d0849b..445df9e 100644
--- a/contrib/sendmail/src/readcf.c
+++ b/contrib/sendmail/src/readcf.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -14,7 +14,7 @@
#include <sendmail.h>
#include <sm/sendmail.h>
-SM_RCSID("@(#)$Id: readcf.c,v 8.664 2007/07/10 17:01:22 ca Exp $")
+SM_RCSID("@(#)$Id: readcf.c,v 8.666 2008/02/14 17:25:14 ca Exp $")
#if NETINET || NETINET6
# include <arpa/inet.h>
@@ -2249,6 +2249,12 @@ static struct optioninfo
# define O_ADDR_TYPE_MODES 0xe0
{ "AddrTypeModes", O_ADDR_TYPE_MODES, OI_NONE },
#endif /* _FFR_ADDR_TYPE_MODES */
+#if _FFR_BADRCPT_SHUTDOWN
+# define O_RCPTSHUTD 0xe1
+ { "BadRcptShutdown", O_RCPTSHUTD, OI_SAFE },
+# define O_RCPTSHUTDG 0xe2
+ { "BadRcptShutdownGood", O_RCPTSHUTDG, OI_SAFE },
+#endif /* _FFR_BADRCPT_SHUTDOWN */
{ NULL, '\0', OI_NONE }
};
@@ -3817,6 +3823,16 @@ setoption(opt, val, safe, sticky, e)
break;
#endif /* _FFR_ADDR_TYPE_MODES */
+#if _FFR_BADRCPT_SHUTDOWN
+ case O_RCPTSHUTD:
+ BadRcptShutdown = atoi(val);
+ break;
+
+ case O_RCPTSHUTDG:
+ BadRcptShutdownGood = atoi(val);
+ break;
+#endif /* _FFR_BADRCPT_SHUTDOWN */
+
default:
if (tTd(37, 1))
{
diff --git a/contrib/sendmail/src/savemail.c b/contrib/sendmail/src/savemail.c
index 7c7f288..cf72e8d 100644
--- a/contrib/sendmail/src/savemail.c
+++ b/contrib/sendmail/src/savemail.c
@@ -9,8 +9,6 @@
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
- * $FreeBSD$
- *
*/
#include <sendmail.h>
diff --git a/contrib/sendmail/src/sendmail.h b/contrib/sendmail/src/sendmail.h
index 82ab6a9..88607e6 100644
--- a/contrib/sendmail/src/sendmail.h
+++ b/contrib/sendmail/src/sendmail.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -52,7 +52,7 @@
#ifdef _DEFINE
# ifndef lint
-SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.1052 2007/10/05 23:06:30 ca Exp $";
+SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.1059 2008/02/15 23:19:58 ca Exp $";
# endif /* ! lint */
#endif /* _DEFINE */
@@ -1551,6 +1551,7 @@ extern void stabapply __P((void (*)(STAB *, int), int));
#define MD_ARPAFTP 'a' /* obsolete ARPANET mode (Grey Book) */
#define MD_DAEMON 'd' /* run as a daemon */
#define MD_FGDAEMON 'D' /* run daemon in foreground */
+#define MD_LOCAL 'l' /* like daemon, but localhost only */
#define MD_VERIFY 'v' /* verify: don't collect or deliver */
#define MD_TEST 't' /* test mode: resolve addrs only */
#define MD_INITALIAS 'i' /* initialize alias database */
@@ -1561,6 +1562,12 @@ extern void stabapply __P((void (*)(STAB *, int), int));
#define MD_PURGESTAT 'H' /* purge persistent host stat info */
#define MD_QUEUERUN 'q' /* queue run */
+#if _FFR_LOCAL_DAEMON
+EXTERN bool LocalDaemon;
+#else /* _FFR_LOCAL_DAEMON */
+# define LocalDaemon false
+#endif /* _FFR_LOCAL_DAEMON */
+
/* Note: see also include/sendmail/pathnames.h: GET_CLIENT_CF */
/* values for e_sendmode -- send modes */
@@ -2229,6 +2236,10 @@ EXTERN char InetMode; /* default network for daemon mode */
EXTERN char OpMode; /* operation mode, see below */
EXTERN char SpaceSub; /* substitution for <lwsp> */
EXTERN int BadRcptThrottle; /* Throttle rejected RCPTs per SMTP message */
+#if _FFR_BADRCPT_SHUTDOWN
+EXTERN int BadRcptShutdown; /* Shutdown connection for rejected RCPTs */
+EXTERN int BadRcptShutdownGood; /* above even when there are good RCPTs */
+#endif /* _FFR_BADRCPT_SHUTDOWN */
EXTERN int CheckpointInterval; /* queue file checkpoint interval */
EXTERN int ConfigLevel; /* config file level */
EXTERN int ConnRateThrottle; /* throttle for SMTP connection rate */
@@ -2590,6 +2601,11 @@ extern void setoption __P((int, char *, bool, bool, ENVELOPE *));
extern sigfunc_t setsignal __P((int, sigfunc_t));
extern void sm_setuserenv __P((const char *, const char *));
extern void settime __P((ENVELOPE *));
+#if STARTTLS
+extern void set_tls_rd_tmo __P((int));
+#else /* STARTTLS */
+#define set_tls_rd_tmo(rd_tmo)
+#endif /* STARTTLS */
extern char *sfgets __P((char *, int, SM_FILE_T *, time_t, char *));
extern char *shortenstring __P((const char *, size_t));
extern char *shorten_hostname __P((char []));
diff --git a/contrib/sendmail/src/sfsasl.c b/contrib/sendmail/src/sfsasl.c
index 216d87e..67e919f 100644
--- a/contrib/sendmail/src/sfsasl.c
+++ b/contrib/sendmail/src/sfsasl.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1999-2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: sfsasl.c,v 8.115 2006/04/18 21:34:07 ca Exp $")
+SM_RCSID("@(#)$Id: sfsasl.c,v 8.117 2008/01/31 18:48:29 ca Exp $")
#include <stdlib.h>
#include <sendmail.h>
#include <sm/time.h>
@@ -675,6 +675,26 @@ tls_retry(ssl, rfd, wfd, tlsstart, timeout, err, where)
#endif /* ETIMEDOUT */
/*
+** SET_TLS_RD_TMO -- read secured information for the caller
+**
+** Parameters:
+** rd_tmo -- read timeout
+**
+** Results:
+** none
+** This is a hack: there is no way to pass it in
+*/
+
+static int tls_rd_tmo = -1;
+
+void
+set_tls_rd_tmo(rd_tmo)
+ int rd_tmo;
+{
+ tls_rd_tmo = rd_tmo;
+}
+
+/*
** TLS_READ -- read secured information for the caller
**
** Parameters:
@@ -725,7 +745,9 @@ tls_read(fp, buf, size)
rfd = SSL_get_rfd(so->con);
wfd = SSL_get_wfd(so->con);
try = tls_retry(so->con, rfd, wfd, tlsstart,
- TimeOuts.to_datablock, ssl_err, "read");
+ (tls_rd_tmo < 0) ? TimeOuts.to_datablock
+ : tls_rd_tmo,
+ ssl_err, "read");
if (try > 0)
goto retry;
errno = SM_ERR_TIMEOUT;
diff --git a/contrib/sendmail/src/sm_resolve.c b/contrib/sendmail/src/sm_resolve.c
index 035a9e5..6d9c28d 100644
--- a/contrib/sendmail/src/sm_resolve.c
+++ b/contrib/sendmail/src/sm_resolve.c
@@ -46,7 +46,7 @@
# if NAMED_BIND
# include "sm_resolve.h"
-SM_RCSID("$Id: sm_resolve.c,v 8.35 2007/06/25 16:20:14 ca Exp $")
+SM_RCSID("$Id: sm_resolve.c,v 8.36 2008/02/11 23:04:16 ca Exp $")
static struct stot
{
@@ -168,7 +168,7 @@ parse_dns_reply(data, len)
int len;
{
unsigned char *p;
- ushort ans_cnt, ui;
+ unsigned short ans_cnt, ui;
int status;
size_t l;
char host[MAXHOSTNAMELEN];
@@ -198,7 +198,7 @@ parse_dns_reply(data, len)
return NULL;
}
- ans_cnt = ntohs((ushort) r->dns_r_h.ancount);
+ ans_cnt = ntohs((unsigned short) r->dns_r_h.ancount);
p += status;
GETSHORT(r->dns_r_q.dns_q_type, p);
diff --git a/contrib/sendmail/src/srvrsmtp.c b/contrib/sendmail/src/srvrsmtp.c
index 514a5e6..fffcd0d 100644
--- a/contrib/sendmail/src/srvrsmtp.c
+++ b/contrib/sendmail/src/srvrsmtp.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -17,7 +17,7 @@
# include <libmilter/mfdef.h>
#endif /* MILTER */
-SM_RCSID("@(#)$Id: srvrsmtp.c,v 8.967 2007/10/01 16:22:14 ca Exp $")
+SM_RCSID("@(#)$Id: srvrsmtp.c,v 8.975 2008/03/31 16:32:13 ca Exp $")
#include <sm/time.h>
#include <sm/fdset.h>
@@ -637,6 +637,9 @@ smtp(nullserver, d_flags, e)
# define p_addr_st NULL
#endif /* MILTER */
size_t inplen;
+#if _FFR_BADRCPT_SHUTDOWN
+ int n_badrcpts_adj;
+#endif /* _FFR_BADRCPT_SHUTDOWN */
SevenBitInput_Saved = SevenBitInput;
smtp.sm_nrcpts = 0;
@@ -903,6 +906,8 @@ smtp(nullserver, d_flags, e)
#endif /* SASL */
#if STARTTLS
+
+ set_tls_rd_tmo(TimeOuts.to_nextcommand);
#endif /* STARTTLS */
#if MILTER
@@ -942,6 +947,7 @@ smtp(nullserver, d_flags, e)
/* arrange to ignore send list */
e->e_sendqueue = NULL;
+ lognullconnection = false;
goto doquit;
}
}
@@ -1054,10 +1060,10 @@ smtp(nullserver, d_flags, e)
if (select(fd + 1, FDSET_CAST &readfds,
NULL, NULL, &timeout) > 0 &&
FD_ISSET(fd, &readfds) &&
- (eoftest = sm_io_getc(InChannel, SM_TIME_DEFAULT))
+ (eoftest = sm_io_getc(InChannel, SM_TIME_DEFAULT))
!= SM_IO_EOF)
{
- sm_io_ungetc(InChannel, SM_TIME_DEFAULT,
+ sm_io_ungetc(InChannel, SM_TIME_DEFAULT,
eoftest);
gettimeofday(&ep, NULL);
timersub(&ep, &bp, &tp);
@@ -2523,6 +2529,36 @@ smtp(nullserver, d_flags, e)
milter_rcpt_added = false;
smtp.sm_e_nrcpts_orig = e->e_nrcpts;
#endif
+#if _FFR_BADRCPT_SHUTDOWN
+ /*
+ ** hack to deal with hack, see below:
+ ** n_badrcpts is increased is limit is reached.
+ */
+
+ n_badrcpts_adj = (BadRcptThrottle > 0 &&
+ n_badrcpts > BadRcptThrottle &&
+ LogLevel > 5)
+ ? n_badrcpts - 1 : n_badrcpts;
+ if (BadRcptShutdown > 0 &&
+ n_badrcpts_adj >= BadRcptShutdown &&
+ (BadRcptShutdownGood == 0 ||
+ smtp.sm_nrcpts == 0 ||
+ (n_badrcpts_adj * 100 /
+ (smtp.sm_nrcpts + n_badrcpts) >=
+ BadRcptShutdownGood)))
+ {
+ if (LogLevel > 5)
+ sm_syslog(LOG_INFO, e->e_id,
+ "%s: Possible SMTP RCPT flood, shutting down connection.",
+ CurSmtpClient);
+ message("421 4.7.0 %s Too many bad recipients; closing connection",
+ MyHostName);
+
+ /* arrange to ignore any current send list */
+ e->e_sendqueue = NULL;
+ goto doquit;
+ }
+#endif /* _FFR_BADRCPT_SHUTDOWN */
if (BadRcptThrottle > 0 &&
n_badrcpts >= BadRcptThrottle)
{
@@ -3775,17 +3811,10 @@ smtp_data(smtp, e)
dropenvelope(ee, true, false);
}
}
- sm_rpool_free(e->e_rpool);
-
- /*
- ** At this point, e == &MainEnvelope, but if we did splitting,
- ** then CurEnv may point to an envelope structure that was just
- ** freed with the rpool. So reset CurEnv *before* calling
- ** newenvelope.
- */
CurEnv = e;
features = e->e_features;
+ sm_rpool_free(e->e_rpool);
newenvelope(e, e, sm_rpool_new_x(NULL));
e->e_flags = BlankEnvelope.e_flags;
e->e_features = features;
diff --git a/contrib/sendmail/src/usersmtp.c b/contrib/sendmail/src/usersmtp.c
index 724f10c..b29495c 100644
--- a/contrib/sendmail/src/usersmtp.c
+++ b/contrib/sendmail/src/usersmtp.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: usersmtp.c,v 8.470 2007/10/17 21:35:30 ca Exp $")
+SM_RCSID("@(#)$Id: usersmtp.c,v 8.472 2008/01/31 18:48:29 ca Exp $")
#include <sysexits.h>
@@ -3077,6 +3077,7 @@ reply(m, mci, e, timeout, pfunc, enhstat, rtype)
*/
bufp = SmtpReplyBuffer;
+ set_tls_rd_tmo(timeout);
for (;;)
{
register char *p;
diff --git a/contrib/sendmail/src/util.c b/contrib/sendmail/src/util.c
index 95d2f9a..dab5961 100644
--- a/contrib/sendmail/src/util.c
+++ b/contrib/sendmail/src/util.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: util.c,v 8.413 2007/09/26 23:29:11 ca Exp $")
+SM_RCSID("@(#)$Id: util.c,v 8.414 2007/11/02 17:30:38 ca Exp $")
#include <sm/sendmail.h>
#include <sysexits.h>
@@ -2823,9 +2823,10 @@ count_open_connections(hostaddr)
return 0;
/*
- ** Initialize to 1 instead of 0 because this code gets called
- ** before proc_list_add() gets called, so we (the daemon child
- ** for this connection) don't count ourselves.
+ ** This code gets called before proc_list_add() gets called,
+ ** so we (the daemon child for this connection) have not yet
+ ** counted ourselves. Hence initialize the counter to 1
+ ** instead of 0 to compensate.
*/
n = 1;
diff --git a/contrib/sendmail/src/version.c b/contrib/sendmail/src/version.c
index ee09fc9..3e5ee8e 100644
--- a/contrib/sendmail/src/version.c
+++ b/contrib/sendmail/src/version.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -13,6 +13,6 @@
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: version.c,v 8.199 2007/10/31 16:04:12 ca Exp $")
+SM_RCSID("@(#)$Id: version.c,v 8.208 2008/04/17 17:04:30 ca Exp $")
-char Version[] = "8.14.2";
+char Version[] = "8.14.3";
OpenPOWER on IntegriCloud