summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgshapiro <gshapiro@FreeBSD.org>2002-06-26 02:48:44 +0000
committergshapiro <gshapiro@FreeBSD.org>2002-06-26 02:48:44 +0000
commitfc4e7b69e3f764d3a1d9157868bc6965ef1db7d6 (patch)
treeb35f716ab0dae216026e8ad27c85a951ee743a03
parentfaacdfb2c2946459651449cedf08a1bc29aee731 (diff)
downloadFreeBSD-src-fc4e7b69e3f764d3a1d9157868bc6965ef1db7d6.zip
FreeBSD-src-fc4e7b69e3f764d3a1d9157868bc6965ef1db7d6.tar.gz
Import sendmail 8.12.5
-rw-r--r--contrib/sendmail/RELEASE_NOTES36
-rw-r--r--contrib/sendmail/cf/README6
-rw-r--r--contrib/sendmail/cf/cf/submit.cf11
-rw-r--r--contrib/sendmail/cf/m4/cfhead.m48
-rw-r--r--contrib/sendmail/cf/m4/proto.m46
-rw-r--r--contrib/sendmail/cf/m4/version.m44
-rw-r--r--contrib/sendmail/cf/sendmail.schema8
-rw-r--r--contrib/sendmail/doc/op/op.me50
-rw-r--r--contrib/sendmail/editmap/Makefile.m41
-rw-r--r--contrib/sendmail/include/libmilter/mfapi.h2
-rw-r--r--contrib/sendmail/include/sm/conf.h5
-rw-r--r--contrib/sendmail/libmilter/Makefile.m41
-rw-r--r--contrib/sendmail/libmilter/docs/smfi_getsymval.html8
-rw-r--r--contrib/sendmail/libmilter/main.c2
-rw-r--r--contrib/sendmail/libsm/Makefile.m41
-rw-r--r--contrib/sendmail/libsm/clock.c9
-rw-r--r--contrib/sendmail/libsmdb/Makefile.m41
-rw-r--r--contrib/sendmail/libsmutil/Makefile.m41
-rw-r--r--contrib/sendmail/mail.local/Makefile.m41
-rw-r--r--contrib/sendmail/mailstats/Makefile.m41
-rw-r--r--contrib/sendmail/makemap/Makefile.m41
-rw-r--r--contrib/sendmail/praliases/Makefile.m41
-rw-r--r--contrib/sendmail/rmail/Makefile.m41
-rw-r--r--contrib/sendmail/smrsh/Makefile.m41
-rw-r--r--contrib/sendmail/src/Makefile.m41
-rw-r--r--contrib/sendmail/src/README38
-rw-r--r--contrib/sendmail/src/aliases3
-rw-r--r--contrib/sendmail/src/bf.c7
-rw-r--r--contrib/sendmail/src/conf.c4
-rw-r--r--contrib/sendmail/src/conf.h2
-rw-r--r--contrib/sendmail/src/daemon.c59
-rw-r--r--contrib/sendmail/src/deliver.c4
-rw-r--r--contrib/sendmail/src/main.c26
-rw-r--r--contrib/sendmail/src/map.c3
-rw-r--r--contrib/sendmail/src/milter.c8
-rw-r--r--contrib/sendmail/src/parseaddr.c8
-rw-r--r--contrib/sendmail/src/queue.c6
-rw-r--r--contrib/sendmail/src/readcf.c7
-rw-r--r--contrib/sendmail/src/sasl.c8
-rw-r--r--contrib/sendmail/src/sendmail.h3
-rw-r--r--contrib/sendmail/src/sfsasl.c4
-rw-r--r--contrib/sendmail/src/sm_resolve.c58
-rw-r--r--contrib/sendmail/src/srvrsmtp.c5
-rw-r--r--contrib/sendmail/src/util.c36
-rw-r--r--contrib/sendmail/src/version.c4
-rw-r--r--contrib/sendmail/test/Makefile.m41
-rw-r--r--contrib/sendmail/vacation/Makefile.m41
-rw-r--r--contrib/sendmail/vacation/vacation.16
48 files changed, 370 insertions, 98 deletions
diff --git a/contrib/sendmail/RELEASE_NOTES b/contrib/sendmail/RELEASE_NOTES
index cf6855a..3282fde 100644
--- a/contrib/sendmail/RELEASE_NOTES
+++ b/contrib/sendmail/RELEASE_NOTES
@@ -1,11 +1,45 @@
SENDMAIL RELEASE NOTES
- $Id: RELEASE_NOTES,v 8.1336 2002/06/03 13:21:25 ca Exp $
+ $Id: RELEASE_NOTES,v 8.1340.2.9 2002/06/25 22:53:32 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.12.5/8.12.5 2002/06/25
+ SECURITY: The DNS map can cause a buffer overflow if the user
+ specifies a dns map using TXT records in the configuration
+ file and a rogue DNS server is queried. None of the
+ sendmail supplied configuration files use this option hence
+ they are not vulnerable. Problem noted independently by
+ Joost Pol of PINE Internet and Anton Rang of Sun Microsystems.
+ Unprintable characters in responses from DNS servers for the DNS
+ map type are changed to 'X' to avoid potential problems
+ with rogue DNS servers.
+ Require a suboption when setting the Milter option. Problem noted
+ by Bryan Costales.
+ Do not silently overwrite command line settings for
+ DirectSubmissionModifiers. Problem noted by Bryan
+ Costales.
+ Prevent a segmentation fault when clearing the event list by
+ turning off alarms before checking if event list is
+ empty. Problem noted by Allan E Johannesen of Worcester
+ Polytechnic Institute.
+ Close a potential race condition in transitioning a memory buffered
+ file onto disk. From Janani Devarajan of Sun Microsystems.
+ Portability:
+ Include paths.h on Linux systems running glibc 2.0 or later
+ to get the definition for _PATH_SENDMAIL, used by
+ rmail and vacation. Problem noted by Kevin
+ A. McGrail of Peregrine Hardware.
+ NOTE: Linux appears to have broken flock() again. Unless
+ the bug is fixed before sendmail 8.13 is shipped,
+ 8.13 will change the default locking method to
+ fcntl() for Linux kernel 2.4 and later. You may
+ want to do this in 8.12 by compiling with
+ -DHASFLOCK=0. Be sure to update other sendmail
+ related programs to match locking techniques.
+
8.12.4/8.12.4 2002/06/03
SECURITY: Inherent limitations in the UNIX file locking model
can leave systems open to a local denial of service
diff --git a/contrib/sendmail/cf/README b/contrib/sendmail/cf/README
index 3c7b7d5..952a16c 100644
--- a/contrib/sendmail/cf/README
+++ b/contrib/sendmail/cf/README
@@ -1213,7 +1213,7 @@ dnsbl Turns on rejection of hosts found in an DNS based rejection
A second argument can be used to change the default error
message. Without that second argument, the error message
will be
- Mail from IP-ADDRESS refused by blackhole site SERVER
+ Rejected: IP-ADDRESS listed at SERVER
where IP-ADDRESS and SERVER are replaced by the appropriate
information. By default, temporary lookup failures are
ignored. This behavior can be changed by specifying a
@@ -2430,7 +2430,7 @@ subscribed. Contact MAPS to subscribe (http://mail-abuse.org/).
You can specify an alternative RBL server to check by specifying an
argument to the FEATURE. The default error message is
- Mail from IP-ADDRESS refused by blackhole site SERVER
+ Rejected: IP-ADDRESS listed at SERVER
where IP-ADDRESS and SERVER are replaced by the appropriate
information. A second argument can be used to specify a different
@@ -4311,4 +4311,4 @@ M4 DIVERSIONS
8 DNS based blacklists
9 special local rulesets (1 and 2)
-$Revision: 8.622 $, Last updated $Date: 2002/06/03 13:15:16 $
+$Revision: 8.623 $, Last updated $Date: 2002/06/07 14:14:14 $
diff --git a/contrib/sendmail/cf/cf/submit.cf b/contrib/sendmail/cf/cf/submit.cf
index fe90962..0613bc1 100644
--- a/contrib/sendmail/cf/cf/submit.cf
+++ b/contrib/sendmail/cf/cf/submit.cf
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
+# Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers.
# All rights reserved.
# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
@@ -24,7 +24,7 @@
######################################################################
######################################################################
-##### $Id: cfhead.m4,v 8.107 2001/07/22 03:25:37 ca Exp $ #####
+##### $Id: cfhead.m4,v 8.108 2002/06/13 18:53:24 ca Exp $ #####
##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
##### $Id: submit.mc,v 8.6 2002/03/26 03:30:58 ca Exp $ #####
##### $Id: msp.m4,v 1.32 2002/03/26 22:02:03 ca Exp $ #####
@@ -32,7 +32,7 @@
##### $Id: no_default_msa.m4,v 8.2 2001/02/14 05:03:22 gshapiro Exp $ #####
-##### $Id: proto.m4,v 8.646 2002/05/19 21:22:40 gshapiro Exp $ #####
+##### $Id: proto.m4,v 8.649 2002/06/13 18:53:24 ca Exp $ #####
# level 10 config file format
V10/Berkeley
@@ -110,7 +110,7 @@ D{MTAHost}[localhost]
# Configuration version number
-DZ8.12.4/Submit
+DZ8.12.5/Submit
###############
@@ -338,7 +338,7 @@ O TimeZoneSpec=
#O DelayLA=0
# maximum number of children we allow at one time
-#O MaxDaemonChildren=12
+#O MaxDaemonChildren=0
# maximum number of new connections per second
#O ConnectionRateThrottle=0
@@ -479,7 +479,6 @@ O PidFile=/var/spool/clientmqueue/sm-client.pid
#O InputMailFilters
-
# CA directory
#O CACERTPath
# CA file
diff --git a/contrib/sendmail/cf/m4/cfhead.m4 b/contrib/sendmail/cf/m4/cfhead.m4
index 708a095..f956365 100644
--- a/contrib/sendmail/cf/m4/cfhead.m4
+++ b/contrib/sendmail/cf/m4/cfhead.m4
@@ -1,5 +1,5 @@
#
-# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
+# Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers.
# All rights reserved.
# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
@@ -119,8 +119,10 @@ define(`_CPO_',`')
define(`CLIENT_OPTIONS', `define(`_CPO_', defn(`_CPO_')
O ClientPortOptions=`$1')')
define(`_MAIL_FILTERS_', `')
+define(`_MAIL_FILTERS_DEF', `')
define(`MAIL_FILTER', `define(`_MAIL_FILTERS_', defn(`_MAIL_FILTERS_')
-X`'$1`, '`$2')')
+X`'$1`, '`$2')
+define(`_MAIL_FILTERS_DEF', defn(`_MAIL_FILTERS_DEF')`X')')
define(`INPUT_MAIL_FILTER', `MAIL_FILTER(`$1', `$2')
ifelse(defn(`confINPUT_MAIL_FILTERS')X, `X',
`define(`confINPUT_MAIL_FILTERS', $1)',
@@ -301,4 +303,4 @@ define(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}'')
divert(0)dnl
-VERSIONID(`$Id: cfhead.m4,v 8.107 2001/07/22 03:25:37 ca Exp $')
+VERSIONID(`$Id: cfhead.m4,v 8.108 2002/06/13 18:53:24 ca Exp $')
diff --git a/contrib/sendmail/cf/m4/proto.m4 b/contrib/sendmail/cf/m4/proto.m4
index ab8b457..d601b67 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.646 2002/05/19 21:22:40 gshapiro Exp $')
+VERSIONID(`$Id: proto.m4,v 8.649 2002/06/13 18:53:24 ca Exp $')
# level CF_LEVEL config file format
V`'CF_LEVEL/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley')
@@ -479,7 +479,7 @@ _OPTION(RefuseLA, `confREFUSE_LA', `12')
_OPTION(DelayLA, `confDELAY_LA', `0')
# maximum number of children we allow at one time
-_OPTION(MaxDaemonChildren, `confMAX_DAEMON_CHILDREN', `12')
+_OPTION(MaxDaemonChildren, `confMAX_DAEMON_CHILDREN', `0')
# maximum number of new connections per second
_OPTION(ConnectionRateThrottle, `confCONNECTION_RATE_THROTTLE', `0')
@@ -621,7 +621,7 @@ _OPTION(TLSSrvOptions, `confTLS_SRV_OPTIONS', `')
# Input mail filters
_OPTION(InputMailFilters, `confINPUT_MAIL_FILTERS', `')
-ifdef(`confINPUT_MAIL_FILTERS', `dnl
+ifelse(len(X`'_MAIL_FILTERS_DEF), `1', `dnl', `dnl
# Milter options
_OPTION(Milter.LogLevel, `confMILTER_LOG_LEVEL', `')
_OPTION(Milter.macros.connect, `confMILTER_MACROS_CONNECT', `')
diff --git a/contrib/sendmail/cf/m4/version.m4 b/contrib/sendmail/cf/m4/version.m4
index 9902120..72d8c22 100644
--- a/contrib/sendmail/cf/m4/version.m4
+++ b/contrib/sendmail/cf/m4/version.m4
@@ -11,8 +11,8 @@ divert(-1)
# the sendmail distribution.
#
#
-VERSIONID(`$Id: version.m4,v 8.92 2002/05/31 18:53:59 ca Exp $')
+VERSIONID(`$Id: version.m4,v 8.92.2.2 2002/06/25 22:51:52 ca Exp $')
#
divert(0)
# Configuration version number
-DZ8.12.4`'ifdef(`confCF_VERSION', `/confCF_VERSION')
+DZ8.12.5`'ifdef(`confCF_VERSION', `/confCF_VERSION')
diff --git a/contrib/sendmail/cf/sendmail.schema b/contrib/sendmail/cf/sendmail.schema
index bab47e8..ebe4c96 100644
--- a/contrib/sendmail/cf/sendmail.schema
+++ b/contrib/sendmail/cf/sendmail.schema
@@ -1,16 +1,17 @@
-# Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
+# Copyright (c) 2000-2002 Sendmail, Inc. and its suppliers.
# All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
-# $Id: sendmail.schema,v 8.14 2001/08/31 17:18:18 gshapiro Exp $
+# $Id: sendmail.schema,v 8.19 2002/06/04 17:31:43 gshapiro Exp $
# Note that this schema is experimental at this point as it has had little
# public review. Therefore, it may change in future versions. Feedback
# via sendmail@sendmail.org is encouraged.
+
# OID arcs for Sendmail
# enterprise: 1.3.6.1.4.1
# sendmail: enterprise.6152
@@ -87,6 +88,7 @@ attributetype ( 1.3.6.1.4.1.6152.10.3.1.16
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
+
#objectClass sendmailMTAMap
# requires
# objectClass,
@@ -143,6 +145,7 @@ attributetype ( 1.3.6.1.4.1.6152.10.3.1.20
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
#objectClass sendmailMTAAlias
# requires
# objectClass,
@@ -198,6 +201,7 @@ attributetype ( 1.3.6.1.4.1.6152.10.3.1.23
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
#objectClass sendmailMTAClass
# requires
# objectClass,
diff --git a/contrib/sendmail/doc/op/op.me b/contrib/sendmail/doc/op/op.me
index 8d14002..6780db5 100644
--- a/contrib/sendmail/doc/op/op.me
+++ b/contrib/sendmail/doc/op/op.me
@@ -9,7 +9,7 @@
.\" the sendmail distribution.
.\"
.\"
-.\" $Id: op.me,v 8.607 2002/05/22 19:58:33 gshapiro Exp $
+.\" $Id: op.me,v 8.609.2.2 2002/06/25 20:30:35 ca Exp $
.\"
.\" eqn op.me | pic | troff -me
.\"
@@ -88,7 +88,7 @@ Sendmail, Inc.
.de Ve
Version \\$2
..
-.Ve $Revision: 8.607 $
+.Ve $Revision: 8.609.2.2 $
.rm Ve
.sp
For Sendmail Version 8.12
@@ -753,6 +753,12 @@ Notice: do not use the same key for
.i sendmail
invocations with different queue directories
or different queue group declarations.
+Access to shared memory is not controlled by locks,
+i.e., there is a race condition when data in the shared memory is updated.
+However, since operation of
+.i sendmail
+does not rely on the data in the shared memory, this does not negatively
+influence the behavior.
.sh 3 "/var/spool/clientmqueue"
.pp
The directory
@@ -1274,6 +1280,13 @@ the flag
.b \-bP
can be used to print the number of entries in the queue(s),
provided a process updates the data.
+However, as explained earlier, the output might be slightly wrong,
+since access to the shared memory is not locked.
+For example,
+``unknown number of entries''
+might be shown.
+The internal counters are updated after each queue run
+to the correct value again.
.sh 3 "Forcing the queue"
.pp
.i Sendmail
@@ -2769,6 +2782,34 @@ is still accepted.
Notice that the MSP submits mail to the MTA via SMTP, and hence
mail will be queued in the client queue in such a case.
Therefore it is necessary to run the client mail queue periodically.
+.sh 2 "Resource Limits"
+.pp
+.i Sendmail
+has several parameters to control resource usage.
+Besides those mentionted in the previous section, there are at least
+.b MaxDaemonChildren ,
+.b ConnectionRateThrottle ,
+.b MaxQueueChildren ,
+and
+.b MaxRunnersPerQueue .
+The latter two limit the number of
+.i sendmail
+processes that operate on the queue.
+These are discussed in the section
+``Queue Group Declaration''.
+The former two can be used to limit the number of incoming connections.
+Their appropriate values depend on the host operating system and
+the hardware, e.g., amount of memory.
+In many situations it might be useful to set limits to prevent
+to have too many
+.i sendmail
+processes, however, these limits can be abused to mount a
+denial of service attack.
+For example, if
+.b MaxDaemonChildren=10
+then an attacker needs to open only 10 SMTP sessions to the server,
+leave them idle for most of the time,
+and no more connections will be accepted.
.sh 2 "Delivery Mode"
.pp
There are a number of delivery modes that
@@ -6557,6 +6598,7 @@ If not set,
is either "CC f" if the option
.b \-G
is used or "c u" otherwise.
+Note that only the the "CC", "c", "f", and "u" flags are checked.
.ip DontBlameSendmail=\fIoption,option,...\fP
[no short name]
In order to avoid possible cracking attempts
@@ -7050,6 +7092,7 @@ The characters ``@,;:\e()[]'' are always added to this list.
.ip NiceQueueRun
[no short name]
The priority of queue runners (nice(3)).
+This value must be greater or equal zero.
.ip NoRecipientAction
[no short name]
The action to take when you receive a message that has no valid
@@ -8674,6 +8717,7 @@ Fields are:
Flags for this queue group.
.ip Nice
The nice(2) increment for the queue group.
+This value must be greater or equal zero.
.ip Interval
The time between two queue runs.
.ip Path
@@ -10627,7 +10671,7 @@ replace it with a blank sheet for double-sided output.
.\".sz 10
.\"Eric Allman
.\".sp
-.\"Version $Revision: 8.607 $
+.\"Version $Revision: 8.609.2.2 $
.\".ce 0
.bp 3
.ce
diff --git a/contrib/sendmail/editmap/Makefile.m4 b/contrib/sendmail/editmap/Makefile.m4
index 906e198..566b6e2 100644
--- a/contrib/sendmail/editmap/Makefile.m4
+++ b/contrib/sendmail/editmap/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 1.4.6.1 2002/06/21 21:58:27 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/include/libmilter/mfapi.h b/contrib/sendmail/include/libmilter/mfapi.h
index 9cf07c7..c36a38c 100644
--- a/contrib/sendmail/include/libmilter/mfapi.h
+++ b/contrib/sendmail/include/libmilter/mfapi.h
@@ -7,7 +7,7 @@
* the sendmail distribution.
*
*
- * $Id: mfapi.h,v 8.42 2002/04/30 23:52:23 msk Exp $
+ * $Id: mfapi.h,v 8.44 2002/06/04 05:06:40 gshapiro Exp $
*/
/*
diff --git a/contrib/sendmail/include/sm/conf.h b/contrib/sendmail/include/sm/conf.h
index 12688ea..83950bc 100644
--- a/contrib/sendmail/include/sm/conf.h
+++ b/contrib/sendmail/include/sm/conf.h
@@ -10,7 +10,7 @@
* the sendmail distribution.
*
*
- * $Id: conf.h,v 1.88 2002/05/01 16:09:41 gshapiro Exp $
+ * $Id: conf.h,v 1.90.2.2 2002/06/21 22:31:35 gshapiro Exp $
*/
/*
@@ -1358,6 +1358,9 @@ extern void *malloc();
# ifndef TZ_TYPE
# define TZ_TYPE TZ_NONE /* no standard for Linux */
# endif /* ! TZ_TYPE */
+# if (__GLIBC__ >= 2)
+# include <paths.h>
+# endif /* (__GLIBC__ >= 2) */
# ifndef _PATH_SENDMAILPID
# define _PATH_SENDMAILPID "/var/run/sendmail.pid"
# endif /* ! _PATH_SENDMAILPID */
diff --git a/contrib/sendmail/libmilter/Makefile.m4 b/contrib/sendmail/libmilter/Makefile.m4
index ea1124d..d824298 100644
--- a/contrib/sendmail/libmilter/Makefile.m4
+++ b/contrib/sendmail/libmilter/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 8.30.2.1 2002/06/21 21:58:28 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
dnl only required for compilation of EXTRAS
diff --git a/contrib/sendmail/libmilter/docs/smfi_getsymval.html b/contrib/sendmail/libmilter/docs/smfi_getsymval.html
index d8a3304..8cbde7d 100644
--- a/contrib/sendmail/libmilter/docs/smfi_getsymval.html
+++ b/contrib/sendmail/libmilter/docs/smfi_getsymval.html
@@ -37,7 +37,11 @@ Get the value of a sendmail macro.
<td>The opaque context structure.
</td></tr>
<tr valign="top"><td>symname</td>
- <td>The name of a sendmail macro, optinally enclosed in braces ("{" and "}"). <a href="#notes">See below</a> for default macros.
+ <td>The name of a sendmail macro.
+ Single letter macros can optionally be enclosed in braces ("{" and "}"),
+ longer macro names must be enclosed in braces, just as in a
+ <tt>sendmail.cf</tt> file.
+ <a href="#notes">See below</a> for default macros.
</td></tr>
</table>
</td></tr>
@@ -82,7 +86,7 @@ sendmail distribution.
<hr size="1">
<font size="-1">
-Copyright (c) 2000 Sendmail, Inc. and its suppliers.
+Copyright (c) 2000, 2002 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/main.c b/contrib/sendmail/libmilter/main.c
index 92690cd..6fc3f95 100644
--- a/contrib/sendmail/libmilter/main.c
+++ b/contrib/sendmail/libmilter/main.c
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: main.c,v 8.63 2002/04/30 23:52:24 msk Exp $")
+SM_RCSID("@(#)$Id: main.c,v 8.64 2002/06/04 02:32:32 geir Exp $")
#define _DEFINE 1
#include "libmilter.h"
diff --git a/contrib/sendmail/libsm/Makefile.m4 b/contrib/sendmail/libsm/Makefile.m4
index 957eb09..563cf10 100644
--- a/contrib/sendmail/libsm/Makefile.m4
+++ b/contrib/sendmail/libsm/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 1.64.2.1 2002/06/21 21:58:29 ca Exp $
define(`confREQUIRE_LIBUNIX')
include(confBUILDTOOLSDIR`/M4/switch.m4')
diff --git a/contrib/sendmail/libsm/clock.c b/contrib/sendmail/libsm/clock.c
index ada9689..fb7e911 100644
--- a/contrib/sendmail/libsm/clock.c
+++ b/contrib/sendmail/libsm/clock.c
@@ -12,7 +12,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: clock.c,v 1.35 2002/03/22 18:34:38 gshapiro Exp $")
+SM_RCSID("@(#)$Id: clock.c,v 1.35.2.1 2002/06/20 05:14:45 gshapiro Exp $")
#include <unistd.h>
#include <time.h>
#include <errno.h>
@@ -257,9 +257,6 @@ sm_clear_events()
#endif /* SM_CONF_SETITIMER */
int wasblocked;
- if (SmEventQueue == NULL)
- return;
-
/* nothing will be left in event queue, no need for an alarm */
#if SM_CONF_SETITIMER
clr.it_interval.tv_sec = 0;
@@ -270,6 +267,10 @@ sm_clear_events()
#else /* SM_CONF_SETITIMER */
(void) alarm(0);
#endif /* SM_CONF_SETITIMER */
+
+ if (SmEventQueue == NULL)
+ return;
+
wasblocked = sm_blocksignal(SIGALRM);
/* find the end of the EventQueue */
diff --git a/contrib/sendmail/libsmdb/Makefile.m4 b/contrib/sendmail/libsmdb/Makefile.m4
index 90cecfe..23f39d0 100644
--- a/contrib/sendmail/libsmdb/Makefile.m4
+++ b/contrib/sendmail/libsmdb/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 8.13.4.1 2002/06/21 21:58:33 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/libsmutil/Makefile.m4 b/contrib/sendmail/libsmutil/Makefile.m4
index 5348e33..36c5d7a 100644
--- a/contrib/sendmail/libsmutil/Makefile.m4
+++ b/contrib/sendmail/libsmutil/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 8.16.4.1 2002/06/21 21:58:35 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/mail.local/Makefile.m4 b/contrib/sendmail/mail.local/Makefile.m4
index fa30055..63c14e0 100644
--- a/contrib/sendmail/mail.local/Makefile.m4
+++ b/contrib/sendmail/mail.local/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 8.49.2.1 2002/06/21 21:58:36 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/mailstats/Makefile.m4 b/contrib/sendmail/mailstats/Makefile.m4
index 02dc956..e981401 100644
--- a/contrib/sendmail/mailstats/Makefile.m4
+++ b/contrib/sendmail/mailstats/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 8.34.4.1 2002/06/21 21:58:37 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/makemap/Makefile.m4 b/contrib/sendmail/makemap/Makefile.m4
index 171a548..2396311 100644
--- a/contrib/sendmail/makemap/Makefile.m4
+++ b/contrib/sendmail/makemap/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 8.42.4.1 2002/06/21 21:58:38 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/praliases/Makefile.m4 b/contrib/sendmail/praliases/Makefile.m4
index 20509a6..248fccd 100644
--- a/contrib/sendmail/praliases/Makefile.m4
+++ b/contrib/sendmail/praliases/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 8.34.4.1 2002/06/21 21:58:39 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/rmail/Makefile.m4 b/contrib/sendmail/rmail/Makefile.m4
index c78b6ca..6b2a049 100644
--- a/contrib/sendmail/rmail/Makefile.m4
+++ b/contrib/sendmail/rmail/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 8.42.4.1 2002/06/21 21:58:46 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/smrsh/Makefile.m4 b/contrib/sendmail/smrsh/Makefile.m4
index cdc094d..f090250 100644
--- a/contrib/sendmail/smrsh/Makefile.m4
+++ b/contrib/sendmail/smrsh/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 8.34.2.1 2002/06/21 21:58:48 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/src/Makefile.m4 b/contrib/sendmail/src/Makefile.m4
index bb5dc1a..615ac59 100644
--- a/contrib/sendmail/src/Makefile.m4
+++ b/contrib/sendmail/src/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 8.91.2.1 2002/06/21 21:58:47 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/src/README b/contrib/sendmail/src/README
index d24e47b..b8c31ec 100644
--- a/contrib/sendmail/src/README
+++ b/contrib/sendmail/src/README
@@ -9,7 +9,7 @@
# the sendmail distribution.
#
#
-# $Id: README,v 8.355 2002/05/22 19:46:26 gshapiro Exp $
+# $Id: README,v 8.355.2.3 2002/06/21 22:44:56 gshapiro Exp $
#
This directory contains the source files for sendmail(TM).
@@ -1266,9 +1266,15 @@ HP-UX 8.00
README file for the future...
Linux
- Something broke between versions 0.99.13 and 0.99.14 of Linux:
- the flock() system call gives errors. If you are running .14,
- you must not use flock. You can do this with -DHASFLOCK=0.
+ Something broke between versions 0.99.13 and 0.99.14 of Linux: the
+ flock() system call gives errors. If you are running .14, you must
+ not use flock. You can do this with -DHASFLOCK=0. We have also
+ been getting complaints since version 2.4.X was released. Unless
+ the bug is fixed before sendmail 8.13 is shipped, 8.13 will change
+ the default locking method to fcntl() for Linux kernel version 2.4
+ and later. Be sure to update other sendmail related programs to
+ match locking techniques (some examples, besides makemap and
+ mail.local, include procmail, mailx, mutt, elm, etc).
Around the inclusion of bind-4.9.3 & Linux libc-4.6.20, the
initialization of the _res structure changed. If /etc/hosts.conf
@@ -1515,6 +1521,28 @@ Darwin/Mac OS X (10.X.X)
b. Set / to group unwritable (as superuser):
chmod g-w /
+Darwin/Mac OS X (10.1.5)
+ Apple's upgrade to sendmail 8.12 is incorrectly configured. You
+ will need to manually fix it up by doing the following:
+
+ 1. chown smmsp:smmsp /var/spool/clientmqueue
+ 2. chmod 2770 /var/spool/clientmqueue
+ 3. chgrp smmsp /usr/sbin/sendmail
+ 4. chmod g+s /usr/sbin/sendmail
+
+ From Daniel J. Luke <dluke@geeklair.net>:
+
+ It appears that setting the sendmail.cf property in
+ /locations/sendmail in NetInfo on Mac OS X 10.1.5 with sendmail
+ 8.12.4 causes 'bad things' to happen.
+
+ Specifically sendmail instances that should be getting their config
+ from /etc/mail/submit.cf don't (so mail/mutt/perl scripts which
+ open pipes to sendmail stop working as sendmail tries to write to
+ /var/spool/mqueue and cannot as sendmail is no longer suid root).
+
+ Removing the entry from NetInfo fixes this problem.
+
GNU getopt
I'm told that GNU getopt has a problem in that it gets confused
by the double call. Use the version in conf.c instead.
@@ -1740,4 +1768,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.355 $, last update $Date: 2002/05/22 19:46:26 $ )
+(Version $Revision: 8.355.2.3 $, last update $Date: 2002/06/21 22:44:56 $ )
diff --git a/contrib/sendmail/src/aliases b/contrib/sendmail/src/aliases
index 73899d4..2d06ae3 100644
--- a/contrib/sendmail/src/aliases
+++ b/contrib/sendmail/src/aliases
@@ -1,5 +1,5 @@
#
-# $Id: aliases,v 8.4 2001/12/30 04:46:23 gshapiro Exp $
+# $Id: aliases,v 8.5 2002/06/05 22:54:26 gshapiro Exp $
# @(#)aliases 8.2 (Berkeley) 3/5/94
#
# Aliases in this file will NOT be expanded in the header from
@@ -35,7 +35,6 @@ ingres: root
nobody: root
system: root
toor: root
-uucp: root
# Well-known aliases
manager: root
diff --git a/contrib/sendmail/src/bf.c b/contrib/sendmail/src/bf.c
index eb41798..f678308 100644
--- a/contrib/sendmail/src/bf.c
+++ b/contrib/sendmail/src/bf.c
@@ -18,7 +18,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: bf.c,v 8.54 2002/04/20 18:03:42 gshapiro Exp $")
+SM_RCSID("@(#)$Id: bf.c,v 8.54.2.2 2002/06/21 19:58:40 gshapiro Exp $")
#include <sys/types.h>
#include <sys/stat.h>
@@ -681,6 +681,7 @@ sm_bfcommit(fp)
/* Do we need to open a file? */
if (!bfp->bf_ondisk)
{
+ int save_errno;
MODE_T omask;
struct stat st;
@@ -700,14 +701,16 @@ sm_bfcommit(fp)
/* Clear umask as bf_filemode are the true perms */
omask = umask(0);
- retval = OPEN(bfp->bf_filename, O_RDWR | O_CREAT | O_TRUNC,
+ retval = OPEN(bfp->bf_filename, O_RDWR | O_CREAT | O_EXCL,
bfp->bf_filemode, bfp->bf_flags);
+ save_errno = errno;
(void) umask(omask);
/* Couldn't create file: failure */
if (retval < 0)
{
/* errno is set implicitly by open() */
+ errno = save_errno;
return -1;
}
diff --git a/contrib/sendmail/src/conf.c b/contrib/sendmail/src/conf.c
index 4a0a25d..59e485b 100644
--- a/contrib/sendmail/src/conf.c
+++ b/contrib/sendmail/src/conf.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: conf.c,v 8.969 2002/05/24 23:48:55 gshapiro Exp $")
+SM_RCSID("@(#)$Id: conf.c,v 8.972 2002/06/18 16:11:44 ca Exp $")
#include <sendmail/pathnames.h>
@@ -2338,7 +2338,7 @@ typedef unsigned int *pt_entry_t;
*/
# ifdef SPT_ALIGN_SIZE
-# define SPT_ALIGN(x, align) ((((x) + SPT_ALIGN_SIZE) >> (align)) << (align))
+# define SPT_ALIGN(x, align) (((((x) + SPT_ALIGN_SIZE) >> (align)) << (align)) - 1)
# else /* SPT_ALIGN_SIZE */
# define SPT_ALIGN(x, align) (x)
# endif /* SPT_ALIGN_SIZE */
diff --git a/contrib/sendmail/src/conf.h b/contrib/sendmail/src/conf.h
index 89bdd7e..22d7737 100644
--- a/contrib/sendmail/src/conf.h
+++ b/contrib/sendmail/src/conf.h
@@ -10,7 +10,7 @@
* the sendmail distribution.
*
*
- * $Id: conf.h,v 8.562 2002/05/22 19:46:26 gshapiro Exp $
+ * $Id: conf.h,v 8.563 2002/06/04 02:13:50 geir Exp $
*/
/*
diff --git a/contrib/sendmail/src/daemon.c b/contrib/sendmail/src/daemon.c
index 0b2cd94..28e96ff 100644
--- a/contrib/sendmail/src/daemon.c
+++ b/contrib/sendmail/src/daemon.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: daemon.c,v 8.612 2002/05/02 19:40:52 ca Exp $")
+SM_RCSID("@(#)$Id: daemon.c,v 8.613 2002/06/05 21:26:35 gshapiro Exp $")
#if defined(SOCK_STREAM) || defined(__GNU_LIBRARY__)
# define USE_SOCK_STREAM 1
@@ -1710,6 +1710,58 @@ setsockaddroptions(p, d)
#define DEF_LISTENQUEUE 10
+struct dflags
+{
+ char *d_name;
+ int d_flag;
+};
+
+static struct dflags DaemonFlags[] =
+{
+ { "AUTHREQ", D_AUTHREQ },
+ { "BINDIF", D_BINDIF },
+ { "CANONREQ", D_CANONREQ },
+ { "IFNHELO", D_IFNHELO },
+ { "FQMAIL", D_FQMAIL },
+ { "FQRCPT", D_FQRCPT },
+#if _FFR_SMTP_SSL
+ { "SMTPS", D_SMTPS },
+#endif /* _FFR_SMTP_SSL */
+ { "UNQUALOK", D_UNQUALOK },
+ { "NOAUTH", D_NOAUTH },
+ { "NOCANON", D_NOCANON },
+ { "NOETRN", D_NOETRN },
+ { "NOTLS", D_NOTLS },
+ { "ETRNONLY", D_ETRNONLY },
+ { "OPTIONAL", D_OPTIONAL },
+ { "DISABLE", D_DISABLE },
+ { "ISSET", D_ISSET },
+ { NULL, 0 }
+};
+
+static void
+printdaemonflags(d)
+ DAEMON_T *d;
+{
+ register struct dflags *df;
+ bool first = true;
+
+ for (df = DaemonFlags; df->d_name != NULL; df++)
+ {
+ if (!bitnset(df->d_flag, d->d_flags))
+ continue;
+ if (first)
+ (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, "<%s",
+ df->d_name);
+ else
+ (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, ",%s",
+ df->d_name);
+ first = false;
+ }
+ if (!first)
+ (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, ">");
+}
+
bool
setdaemonoptions(p)
register char *p;
@@ -1741,10 +1793,7 @@ setdaemonoptions(p)
if (tTd(37, 1))
{
sm_dprintf("Daemon %s flags: ", Daemons[NDaemons].d_name);
- if (bitnset(D_ETRNONLY, Daemons[NDaemons].d_flags))
- sm_dprintf("ETRNONLY ");
- if (bitnset(D_NOETRN, Daemons[NDaemons].d_flags))
- sm_dprintf("NOETRN ");
+ printdaemonflags(&Daemons[NDaemons]);
sm_dprintf("\n");
}
++NDaemons;
diff --git a/contrib/sendmail/src/deliver.c b/contrib/sendmail/src/deliver.c
index 2b1fc4c..e70e1da 100644
--- a/contrib/sendmail/src/deliver.c
+++ b/contrib/sendmail/src/deliver.c
@@ -14,7 +14,7 @@
#include <sendmail.h>
#include <sys/time.h>
-SM_RCSID("@(#)$Id: deliver.c,v 8.939 2002/05/25 00:46:00 gshapiro Exp $")
+SM_RCSID("@(#)$Id: deliver.c,v 8.940 2002/06/06 00:03:16 gshapiro Exp $")
#if HASSETUSERCONTEXT
# include <login_cap.h>
@@ -3282,7 +3282,7 @@ do_transfer:
if (i != EX_OK)
{
markfailure(e, to, mci, i, false);
- giveresponse(i, to->q_status, m, mci,
+ giveresponse(i, to->q_status, m, mci,
ctladdr, xstart, e, to);
if (i == EX_TEMPFAIL)
to->q_state = QS_RETRY;
diff --git a/contrib/sendmail/src/main.c b/contrib/sendmail/src/main.c
index 78c1862..22a1aac 100644
--- a/contrib/sendmail/src/main.c
+++ b/contrib/sendmail/src/main.c
@@ -25,7 +25,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.882 2002/05/10 16:20:55 ca Exp $")
+SM_RCSID("@(#)$Id: main.c,v 8.887 2002/06/17 22:25:52 gshapiro Exp $")
#if NETINET || NETINET6
@@ -1064,6 +1064,11 @@ main(argc, argv, envp)
default:
i = Errors;
QueueIntvl = convtime(optarg, 'm');
+ if (QueueIntvl < 0)
+ {
+ usrerr("Invalid -q value");
+ ExitStat = EX_USAGE;
+ }
/* check for bad conversion */
if (i < Errors)
@@ -1188,14 +1193,19 @@ main(argc, argv, envp)
if (bitset(SUBMIT_MTA, SubmitMode))
{
- macdefine(&BlankEnvelope.e_macro, A_PERM,
- macid("{daemon_flags}"), "CC f");
+ /* If set daemon_flags on command line, don't reset it */
+ if (macvalue(macid("{daemon_flags}"), &BlankEnvelope) == NULL)
+ macdefine(&BlankEnvelope.e_macro, A_PERM,
+ macid("{daemon_flags}"), "CC f");
}
else if (OpMode == MD_DELIVER || OpMode == MD_SMTP)
{
SubmitMode = SUBMIT_MSA;
- macdefine(&BlankEnvelope.e_macro, A_PERM,
- macid("{daemon_flags}"), "c u");
+
+ /* If set daemon_flags on command line, don't reset it */
+ if (macvalue(macid("{daemon_flags}"), &BlankEnvelope) == NULL)
+ macdefine(&BlankEnvelope.e_macro, A_PERM,
+ macid("{daemon_flags}"), "c u");
}
/*
@@ -2243,7 +2253,7 @@ main(argc, argv, envp)
** during startup.
*/
- if (OpMode == MD_DAEMON || QueueIntvl != 0)
+ if (OpMode == MD_DAEMON || QueueIntvl > 0)
{
char dtype[200];
@@ -2283,7 +2293,7 @@ main(argc, argv, envp)
(void) sm_strlcat(dtype, "+SMTP", sizeof dtype);
DaemonPid = CurrentPid;
}
- if (QueueIntvl != 0)
+ if (QueueIntvl > 0)
{
(void) sm_strlcat2(dtype,
queuepersistent
@@ -2314,7 +2324,7 @@ main(argc, argv, envp)
(void) sm_releasesignal(SIGHUP);
(void) sm_signal(SIGTERM, sigterm);
- if (QueueIntvl != 0)
+ if (QueueIntvl > 0)
{
(void) runqueue(true, false, queuepersistent, true);
diff --git a/contrib/sendmail/src/map.c b/contrib/sendmail/src/map.c
index d8570d3..f0301eb 100644
--- a/contrib/sendmail/src/map.c
+++ b/contrib/sendmail/src/map.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: map.c,v 8.645 2002/05/24 21:07:36 gshapiro Exp $")
+SM_RCSID("@(#)$Id: map.c,v 8.645.2.1 2002/06/21 20:25:23 ca Exp $")
#if LDAPMAP
# include <sm/ldap.h>
@@ -1234,6 +1234,7 @@ dns_map_lookup(map, name, av, statp)
# endif /* NETINET6 */
}
+ (void) strreplnonprt(value, 'X');
if (map_p->dns_m_type != rr->rr_type)
{
if (tTd(38, 40))
diff --git a/contrib/sendmail/src/milter.c b/contrib/sendmail/src/milter.c
index f52a725..2e45e50 100644
--- a/contrib/sendmail/src/milter.c
+++ b/contrib/sendmail/src/milter.c
@@ -10,7 +10,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: milter.c,v 8.196 2002/04/14 03:55:07 gshapiro Exp $")
+SM_RCSID("@(#)$Id: milter.c,v 8.197 2002/06/12 22:33:48 gshapiro Exp $")
#if MILTER
# include <libmilter/mfapi.h>
@@ -1401,6 +1401,12 @@ milter_set_option(name, val, sticky)
if (tTd(37, 2) || tTd(64, 5))
sm_dprintf("milter_set_option(%s = %s)", name, val);
+ if (name == NULL)
+ {
+ syserr("milter_set_option: invalid Milter option, must specify suboption");
+ return;
+ }
+
for (mo = MilterOptTab; mo->mo_name != NULL; mo++)
{
if (sm_strcasecmp(mo->mo_name, name) == 0)
diff --git a/contrib/sendmail/src/parseaddr.c b/contrib/sendmail/src/parseaddr.c
index aa0e31d..0c9d49e 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.359 2002/03/29 16:20:47 ca Exp $")
+SM_RCSID("@(#)$Id: parseaddr.c,v 8.359.2.1 2002/06/19 18:24:26 gshapiro Exp $")
static void allocaddr __P((ADDRESS *, int, char *, ENVELOPE *));
static int callsubr __P((char**, int, ENVELOPE *));
@@ -1124,7 +1124,7 @@ rewrite(pvp, ruleset, reclevel, e, maxatom)
ap = macvalue(rp[1], e);
mlp->match_first = avp;
if (tTd(21, 2))
- sm_dprintf("rewrite: LHS $&%s => \"%s\"\n",
+ sm_dprintf("rewrite: LHS $&{%s} => \"%s\"\n",
macname(rp[1]),
ap == NULL ? "(NULL)" : ap);
@@ -1309,7 +1309,7 @@ rewrite(pvp, ruleset, reclevel, e, maxatom)
}
else
{
- /* $&x replacement */
+ /* $&{x} replacement */
char *mval = macvalue(rp[1], e);
char **xpvp;
int trsize = 0;
@@ -1318,7 +1318,7 @@ rewrite(pvp, ruleset, reclevel, e, maxatom)
char pvpbuf[PSBUFSIZE];
if (tTd(21, 2))
- sm_dprintf("rewrite: RHS $&%s => \"%s\"\n",
+ sm_dprintf("rewrite: RHS $&{%s} => \"%s\"\n",
macname(rp[1]),
mval == NULL ? "(NULL)" : mval);
if (mval == NULL || *mval == '\0')
diff --git a/contrib/sendmail/src/queue.c b/contrib/sendmail/src/queue.c
index 5920b1e..98096c7c 100644
--- a/contrib/sendmail/src/queue.c
+++ b/contrib/sendmail/src/queue.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: queue.c,v 8.862 2002/05/09 23:51:53 ca Exp $")
+SM_RCSID("@(#)$Id: queue.c,v 8.863.2.2 2002/06/25 21:34:31 gshapiro Exp $")
#include <dirent.h>
@@ -280,7 +280,7 @@ hash_q(p, h)
** I data file's inode number
** K time of last delivery attempt
** L Solaris Content-Length: header (obsolete)
-** M message (obsolete)
+** M message
** N number of delivery attempts
** P message priority
** q quarantine reason (_FFR_QUARANTINE)
@@ -4203,7 +4203,7 @@ readqf(e, openonly)
orcpt = sm_rpool_strdup_x(e->e_rpool, &bp[1]);
break;
- case 'r': /* original recipient */
+ case 'r': /* final recipient */
frcpt = sm_rpool_strdup_x(e->e_rpool, &bp[1]);
break;
diff --git a/contrib/sendmail/src/readcf.c b/contrib/sendmail/src/readcf.c
index c4d0637..31810a2 100644
--- a/contrib/sendmail/src/readcf.c
+++ b/contrib/sendmail/src/readcf.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: readcf.c,v 8.606 2002/05/09 21:09:01 ca Exp $")
+SM_RCSID("@(#)$Id: readcf.c,v 8.607 2002/06/14 16:57:32 ca Exp $")
#if NETINET || NETINET6
# include <arpa/inet.h>
@@ -2949,14 +2949,13 @@ setoption(opt, val, safe, sticky, e)
#if _FFR_SELECT_SHM
case O_SHMKEYFILE: /* shared memory key file */
# if SM_CONF_SHM
- CANONIFY(val);
- ShmKeyFile = newstr(val);
+ SET_STRING_EXP(ShmKeyFile);
# else /* SM_CONF_SHM */
(void) sm_io_fprintf(smioout, SM_TIME_DEFAULT,
"Warning: Option: %s requires shared memory support (-DSM_CONF_SHM)\n",
OPTNAME);
-# endif /* SM_CONF_SHM */
break;
+# endif /* SM_CONF_SHM */
#endif /* _FFR_SELECT_SHM */
#if _FFR_MAX_FORWARD_ENTRIES
diff --git a/contrib/sendmail/src/sasl.c b/contrib/sendmail/src/sasl.c
index beeece2..f6aa5de 100644
--- a/contrib/sendmail/src/sasl.c
+++ b/contrib/sendmail/src/sasl.c
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: sasl.c,v 8.18 2002/05/25 00:26:42 gshapiro Exp $")
+SM_RCSID("@(#)$Id: sasl.c,v 8.19 2002/06/12 15:06:12 ca Exp $")
#if SASL
# include <stdlib.h>
@@ -262,10 +262,10 @@ iptostring(addr, addrlen, out, outlen)
errno = EINVAL;
return false;
}
- if (inet_ntop(AF_INET, &(addr->sin.sin_addr),
- hbuf, sizeof hbuf) == NULL)
+ if (sm_strlcpy(hbuf, inet_ntoa(addr->sin.sin_addr), sizeof(hbuf))
+ >= sizeof(hbuf))
{
- errno = EINVAL;
+ errno = ENOMEM;
return false;
}
sm_snprintf(pbuf, sizeof pbuf, "%d", ntohs(addr->sin.sin_port));
diff --git a/contrib/sendmail/src/sendmail.h b/contrib/sendmail/src/sendmail.h
index 2284bd6..544e54e 100644
--- a/contrib/sendmail/src/sendmail.h
+++ b/contrib/sendmail/src/sendmail.h
@@ -48,7 +48,7 @@
#ifdef _DEFINE
# ifndef lint
-SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.918 2002/05/23 20:01:56 gshapiro Exp $";
+SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.919.2.1 2002/06/21 20:25:22 ca Exp $";
# endif /* ! lint */
#endif /* _DEFINE */
@@ -2500,6 +2500,7 @@ extern pid_t sm_wait __P((int *));
extern bool split_by_recipient __P((ENVELOPE *e));
extern void stop_sendmail __P((void));
extern char *str2prt __P((char *));
+extern bool strreplnonprt __P((char *, int));
extern bool strcontainedin __P((bool, char *, char *));
extern int switch_map_find __P((char *, char *[], short []));
extern bool transienterror __P((int));
diff --git a/contrib/sendmail/src/sfsasl.c b/contrib/sendmail/src/sfsasl.c
index cad58d2..53d7276 100644
--- a/contrib/sendmail/src/sfsasl.c
+++ b/contrib/sendmail/src/sfsasl.c
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: sfsasl.c,v 8.90 2002/05/09 20:44:11 ca Exp $")
+SM_RCSID("@(#)$Id: sfsasl.c,v 8.91 2002/06/07 00:06:27 geir Exp $")
#include <stdlib.h>
#include <sendmail.h>
#include <errno.h>
@@ -151,7 +151,7 @@ sasl_close(fp)
/* how to deallocate a buffer allocated by SASL */
extern void sm_sasl_free __P((void *));
-# define SASL_DEALLOC(b) sm_sasl_free(b)
+# define SASL_DEALLOC(b) sm_sasl_free(b)
/*
** SASL_READ -- read encrypted information and decrypt it for the caller
diff --git a/contrib/sendmail/src/sm_resolve.c b/contrib/sendmail/src/sm_resolve.c
index e3eb77f..a6f5862 100644
--- a/contrib/sendmail/src/sm_resolve.c
+++ b/contrib/sendmail/src/sm_resolve.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 2000-2002 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -46,7 +46,7 @@
# if NAMED_BIND
# include "sm_resolve.h"
-SM_RCSID("$Id: sm_resolve.c,v 8.24 2001/09/11 04:05:16 gshapiro Exp $")
+SM_RCSID("$Id: sm_resolve.c,v 8.24.4.6 2002/06/25 04:22:41 ca Exp $")
static struct stot
{
@@ -180,8 +180,8 @@ parse_dns_reply(data, len)
p = data;
/* doesn't work on Crays? */
- memcpy(&r->dns_r_h, p, sizeof(HEADER));
- p += sizeof(HEADER);
+ memcpy(&r->dns_r_h, p, sizeof(r->dns_r_h));
+ p += sizeof(r->dns_r_h);
status = dn_expand(data, data + len, p, host, sizeof host);
if (status < 0)
{
@@ -200,7 +200,7 @@ parse_dns_reply(data, len)
rr = &r->dns_r_head;
while (p < data + len)
{
- int type, class, ttl, size;
+ int type, class, ttl, size, txtlen;
status = dn_expand(data, data + len, p, host, sizeof host);
if (status < 0)
@@ -213,7 +213,21 @@ parse_dns_reply(data, len)
GETSHORT(class, p);
GETLONG(ttl, p);
GETSHORT(size, p);
- *rr = (RESOURCE_RECORD_T *) xalloc(sizeof(RESOURCE_RECORD_T));
+ if (p + size > data + len)
+ {
+ /*
+ ** announced size of data exceeds length of
+ ** data paket: someone is cheating.
+ */
+
+ if (LogLevel > 5)
+ sm_syslog(LOG_WARNING, NOQID,
+ "ERROR: DNS RDLENGTH=%d > data len=%d",
+ size, len - (p - data));
+ dns_free_data(r);
+ return NULL;
+ }
+ *rr = (RESOURCE_RECORD_T *) xalloc(sizeof(**rr));
if (*rr == NULL)
{
dns_free_data(r);
@@ -260,7 +274,7 @@ parse_dns_reply(data, len)
}
l = strlen(host) + 1;
(*rr)->rr_u.rr_mx = (MX_RECORD_T *)
- xalloc(sizeof(MX_RECORD_T) + l);
+ xalloc(sizeof(*((*rr)->rr_u.rr_mx)) + l);
if ((*rr)->rr_u.rr_mx == NULL)
{
dns_free_data(r);
@@ -281,7 +295,7 @@ parse_dns_reply(data, len)
}
l = strlen(host) + 1;
(*rr)->rr_u.rr_srv = (SRV_RECORDT_T*)
- xalloc(sizeof(SRV_RECORDT_T) + l);
+ xalloc(sizeof(*((*rr)->rr_u.rr_srv)) + l);
if ((*rr)->rr_u.rr_srv == NULL)
{
dns_free_data(r);
@@ -295,14 +309,35 @@ parse_dns_reply(data, len)
break;
case T_TXT:
- (*rr)->rr_u.rr_txt = (char *) xalloc(size + 1);
+
+ /*
+ ** The TXT record contains the length as
+ ** leading byte, hence the value is restricted
+ ** to 255, which is less than the maximum value
+ ** of RDLENGTH (size). Nevertheless, txtlen
+ ** must be less than size because the latter
+ ** specifies the length of the entire TXT
+ ** record.
+ */
+
+ txtlen = *p;
+ if (txtlen >= size)
+ {
+ if (LogLevel > 5)
+ sm_syslog(LOG_WARNING, NOQID,
+ "ERROR: DNS TXT record size=%d <= text len=%d",
+ size, txtlen);
+ dns_free_data(r);
+ return NULL;
+ }
+ (*rr)->rr_u.rr_txt = (char *) xalloc(txtlen + 1);
if ((*rr)->rr_u.rr_txt == NULL)
{
dns_free_data(r);
return NULL;
}
- (void) strncpy((*rr)->rr_u.rr_txt, (char*) p + 1, *p);
- (*rr)->rr_u.rr_txt[*p] = 0;
+ (void) sm_strlcpy((*rr)->rr_u.rr_txt, (char*) p + 1,
+ txtlen + 1);
break;
default:
@@ -313,6 +348,7 @@ parse_dns_reply(data, len)
return NULL;
}
(void) memcpy((*rr)->rr_u.rr_data, p, size);
+ break;
}
p += size;
rr = &(*rr)->rr_next;
diff --git a/contrib/sendmail/src/srvrsmtp.c b/contrib/sendmail/src/srvrsmtp.c
index bbcd31f..dd14ffa 100644
--- a/contrib/sendmail/src/srvrsmtp.c
+++ b/contrib/sendmail/src/srvrsmtp.c
@@ -16,7 +16,7 @@
# include <libmilter/mfdef.h>
#endif /* MILTER */
-SM_RCSID("@(#)$Id: srvrsmtp.c,v 8.827 2002/05/28 14:29:57 ca Exp $")
+SM_RCSID("@(#)$Id: srvrsmtp.c,v 8.829 2002/06/17 21:54:57 gshapiro Exp $")
#if SASL || STARTTLS
# include <sys/time.h>
@@ -1896,7 +1896,8 @@ smtp(nullserver, d_flags, e)
message("250-AUTH %s", mechlist);
#endif /* SASL */
#if STARTTLS
- if (tls_ok_srv && bitset(SRV_OFFER_TLS, features))
+ if (tls_ok_srv &&
+ bitset(SRV_OFFER_TLS, features))
message("250-STARTTLS");
#endif /* STARTTLS */
if (DeliverByMin > 0)
diff --git a/contrib/sendmail/src/util.c b/contrib/sendmail/src/util.c
index 4974541..52b37ec 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.363 2002/05/24 20:44:05 gshapiro Exp $")
+SM_RCSID("@(#)$Id: util.c,v 8.363.2.1 2002/06/21 20:25:25 ca Exp $")
#include <sysexits.h>
#include <sm/xtrap.h>
@@ -2239,6 +2239,40 @@ denlstring(s, strict, logattacks)
return bp;
}
+
+/*
+** STRREPLNONPRT -- replace "unprintable" characters in a string with subst
+**
+** Parameters:
+** s -- string to manipulate (in place)
+** subst -- character to use as replacement
+**
+** Returns:
+** true iff string did not contain "unprintable" characters
+*/
+
+bool
+strreplnonprt(s, c)
+ char *s;
+ int c;
+{
+ bool ok;
+
+ ok = true;
+ if (s == NULL)
+ return ok;
+ while (*s != '\0')
+ {
+ if (!(isascii(*s) && isprint(*s)))
+ {
+ *s = c;
+ ok = false;
+ }
+ ++s;
+ }
+ return ok;
+}
+
/*
** STR2PRT -- convert "unprintable" characters in a string to \oct
**
diff --git a/contrib/sendmail/src/version.c b/contrib/sendmail/src/version.c
index 3e86eb0..3600b84 100644
--- a/contrib/sendmail/src/version.c
+++ b/contrib/sendmail/src/version.c
@@ -13,6 +13,6 @@
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: version.c,v 8.102 2002/05/31 18:53:59 ca Exp $")
+SM_RCSID("@(#)$Id: version.c,v 8.104.2.2 2002/06/25 22:51:53 ca Exp $")
-char Version[] = "8.12.4";
+char Version[] = "8.12.5";
diff --git a/contrib/sendmail/test/Makefile.m4 b/contrib/sendmail/test/Makefile.m4
index 14868a9..579eb4e 100644
--- a/contrib/sendmail/test/Makefile.m4
+++ b/contrib/sendmail/test/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 1.3.2.1 2002/06/21 21:58:49 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
bldPRODUCT_START(`executable', `test')
diff --git a/contrib/sendmail/vacation/Makefile.m4 b/contrib/sendmail/vacation/Makefile.m4
index 6de9d4e..0cd5236 100644
--- a/contrib/sendmail/vacation/Makefile.m4
+++ b/contrib/sendmail/vacation/Makefile.m4
@@ -1,3 +1,4 @@
+dnl $Id: Makefile.m4,v 8.24.4.1 2002/06/21 21:58:50 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/contrib/sendmail/vacation/vacation.1 b/contrib/sendmail/vacation/vacation.1
index 299df64..055fb7a 100644
--- a/contrib/sendmail/vacation/vacation.1
+++ b/contrib/sendmail/vacation/vacation.1
@@ -9,9 +9,9 @@
.\" the sendmail distribution.
.\"
.\"
-.\" $Id: vacation.1,v 8.29 2002/03/23 19:17:36 gshapiro Exp $
+.\" $Id: vacation.1,v 8.29.2.1 2002/06/21 21:28:06 ca Exp $
.\"
-.TH VACATION 1 "$Date: 2002/03/23 19:17:36 $"
+.TH VACATION 1 "$Date: 2002/06/21 21:28:06 $"
.SH NAME
vacation
\- E-mail auto-responder
@@ -79,7 +79,7 @@ This option defaults to the standard sendmail configuration file,
located at /etc/mail/sendmail.cf on most systems.
.TP
.B \-d
-Send error/debug messages to stdout instead of syslog.
+Send error/debug messages to stderr instead of syslog.
Otherwise, fatal errors, such as calling
.B vacation
with incorrect arguments, or with non-existent
OpenPOWER on IntegriCloud