diff options
author | Gregory Neil Shapiro <gshapiro@FreeBSD.org> | 2013-04-21 17:08:44 +0000 |
---|---|---|
committer | Gregory Neil Shapiro <gshapiro@FreeBSD.org> | 2013-04-21 17:08:44 +0000 |
commit | 552d4955b823634ed151c69903f0b9d33e76e78e (patch) | |
tree | ab52d50bcac2932bf5e37126b12ef0d2886488f1 | |
parent | d4bb04f686cc4600af4de408523b19917ace663f (diff) | |
parent | e388eedd7a4356992c2ecf5dcc8e77368cd9c391 (diff) | |
download | src-test2-552d4955b823634ed151c69903f0b9d33e76e78e.tar.gz src-test2-552d4955b823634ed151c69903f0b9d33e76e78e.zip |
Notes
44 files changed, 799 insertions, 275 deletions
diff --git a/contrib/sendmail/CACerts b/contrib/sendmail/CACerts index 245148d8398e..263e27bc6eaf 100644 --- a/contrib/sendmail/CACerts +++ b/contrib/sendmail/CACerts @@ -1,4 +1,4 @@ -# $Id: CACerts,v 8.5 2011/05/06 23:05:10 ca Exp $ +# $Id: CACerts,v 8.6 2013/01/18 15:14:17 ca Exp $ # This file contains some CA certificates that are used to sign the # certificates of mail servers of members of the sendmail consortium # who may reply to questions etc sent to sendmail.org. @@ -10,93 +10,93 @@ Certificate: Data: Version: 3 (0x2) Serial Number: - c2:3c:61:67:3b:0a:cc:5e - Signature Algorithm: md5WithRSAEncryption - Issuer: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2009/emailAddress=ca+ca-rsa2009@esmtp.org + f1:41:b3:3d:ba:bd:33:49 + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2012/emailAddress=ca+ca-rsa2012@esmtp.org Validity - Not Before: May 14 04:42:18 2009 GMT - Not After : May 13 04:42:18 2012 GMT - Subject: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2009/emailAddress=ca+ca-rsa2009@esmtp.org + Not Before: Mar 10 02:47:46 2012 GMT + Not After : Mar 10 02:47:46 2015 GMT + Subject: C=US, ST=California, L=Berkeley, O=Endmail Org, OU=MTA, CN=Claus Assmann CA RSA 2012/emailAddress=ca+ca-rsa2012@esmtp.org Subject Public Key Info: Public Key Algorithm: rsaEncryption - RSA Public Key: (2048 bit) - Modulus (2048 bit): - 00:d5:f8:d3:48:38:75:df:2e:6b:8b:c4:8d:1d:41: - 5e:ad:4b:96:3d:48:c2:dc:e5:ff:61:98:95:32:03: - e9:b6:71:5a:68:31:bc:e1:5c:aa:0e:70:a7:bc:51: - b7:13:6a:78:54:ae:a6:d0:44:49:1b:5e:37:5b:59: - 20:01:47:a7:ec:41:4c:11:79:8c:25:c1:1b:c0:ed: - 85:b2:de:0f:10:9f:e7:b2:a3:c4:f1:fc:85:51:aa: - d6:68:49:51:3e:04:e1:eb:e9:cd:87:1b:d0:9d:97: - 7b:4c:e1:1e:b1:6a:be:01:0a:a9:97:9a:50:89:e3: - 66:06:4c:07:cb:7e:99:70:13:e8:b4:9c:e7:e6:52: - 38:c0:64:90:42:d0:f5:cf:22:46:22:60:e9:34:70: - 1d:e3:d1:13:33:3a:31:ba:13:06:a8:c2:34:90:47: - c5:a1:bd:2d:7d:98:21:70:de:22:d0:13:11:e5:08: - dd:a0:77:0b:df:34:a7:07:55:de:5a:71:f6:6c:9e: - ec:f7:45:75:1f:22:a9:84:06:c6:4f:84:3d:4e:05: - d7:e4:e5:98:41:61:7b:8e:c9:3b:a6:ed:31:80:7d: - fd:fa:f0:dc:b7:07:82:b8:ec:27:20:39:5f:78:95: - f1:0d:93:8d:f9:4d:21:08:fd:72:89:01:ff:2c:a0: - 71:9d + Public-Key: (2048 bit) + Modulus: + 00:a2:80:fc:c6:ce:7f:60:38:65:f4:38:f9:7a:d9: + 87:fd:47:eb:3f:2c:4a:c9:38:77:6a:77:94:92:7f: + 83:3d:99:57:2c:5f:37:bb:ba:12:10:17:56:fa:eb: + 43:a6:4b:4c:1e:30:32:07:94:2f:5a:d8:65:49:29: + fa:24:d1:f0:0b:45:2d:e5:d5:cb:7d:60:dc:a6:ce: + a4:47:35:30:ee:5e:8d:c2:30:e7:a7:63:32:b0:59: + 80:cc:8c:99:64:77:8f:50:8e:88:51:47:36:ea:9a: + f3:b4:c0:8c:a6:ab:c6:42:57:88:b9:5f:9f:61:15: + bb:79:65:93:ca:a9:fd:17:eb:87:26:8b:eb:b7:2b: + 7e:33:05:2b:ba:c0:46:f7:08:fd:da:c1:50:9b:3d: + 26:83:5c:53:97:89:2c:cc:5f:f2:7b:a8:b7:3d:fb: + f2:b4:89:0d:43:ef:18:5c:21:75:71:cc:f0:c2:a3: + 84:69:c0:a7:f3:9b:de:c1:c7:5a:5c:7e:68:da:49: + 71:af:58:a8:51:9f:bd:f9:3d:bb:a5:92:fa:7b:1d: + 52:f5:fe:90:59:95:27:65:a4:af:97:9a:4f:01:39: + 59:7d:08:6f:a1:8f:42:47:49:bf:12:52:53:39:74: + 8d:62:3b:bd:4c:4f:05:0f:c4:b9:3e:da:a8:0e:96: + 05:2d Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: - A7:61:FA:31:AF:A8:E2:5E:93:B6:84:9E:74:08:A2:76:50:87:69:7C + 08:38:E3:88:92:53:6E:F1:56:69:27:44:B5:4C:A0:18:CA:06:97:EB X509v3 Authority Key Identifier: - keyid:A7:61:FA:31:AF:A8:E2:5E:93:B6:84:9E:74:08:A2:76:50:87:69:7C - DirName:/C=US/ST=California/L=Berkeley/O=Endmail Org/OU=MTA/CN=Claus Assmann CA RSA 2009/emailAddress=ca+ca-rsa2009@esmtp.org - serial:C2:3C:61:67:3B:0A:CC:5E + keyid:08:38:E3:88:92:53:6E:F1:56:69:27:44:B5:4C:A0:18:CA:06:97:EB + DirName:/C=US/ST=California/L=Berkeley/O=Endmail Org/OU=MTA/CN=Claus Assmann CA RSA 2012/emailAddress=ca+ca-rsa2012@esmtp.org + serial:F1:41:B3:3D:BA:BD:33:49 X509v3 Basic Constraints: - CA:TRUE + CA:TRUE X509v3 Subject Alternative Name: - email:ca+ca-rsa2009@esmtp.org + email:ca+ca-rsa2012@esmtp.org X509v3 Issuer Alternative Name: - email:ca+ca-rsa2009@esmtp.org - Signature Algorithm: md5WithRSAEncryption - b3:38:e0:da:a8:07:d8:cc:b8:4d:8c:20:a6:06:2c:f8:27:db: - 8e:28:0f:39:bd:d9:24:c7:9f:e0:4d:d6:b6:63:42:36:0f:d8: - 70:41:e7:9e:a2:24:64:05:ea:85:97:ac:f2:cc:c2:a6:71:bb: - 30:21:c1:c7:c4:54:34:1d:30:09:f0:9b:74:27:93:59:12:4c: - 53:0b:8c:3e:d0:39:ed:4a:d0:d9:66:24:d8:e7:e5:9c:a8:6d: - 5f:56:5d:9a:91:fe:1b:7d:b9:7c:79:9e:1c:b9:71:74:14:f8: - 0c:30:50:f9:b1:22:56:a8:4d:6f:4b:9b:e5:8a:81:33:1b:77: - 75:f6:d8:ce:d4:90:34:86:34:d1:86:75:a9:e1:23:e6:af:c1: - 8e:28:97:47:20:4d:1b:57:09:39:f4:56:01:d2:87:43:3e:29: - f6:c4:5b:7d:8f:9e:bd:ad:36:79:cf:09:70:43:30:21:98:23: - 31:c8:0d:39:ee:77:e1:4a:44:1a:5c:79:2f:6c:ec:8a:3c:db: - 99:a0:11:bc:1a:46:24:51:e7:75:d6:9a:db:ad:dd:55:d4:dd: - ca:81:a0:10:77:96:91:9c:76:30:38:18:f0:82:43:b3:7c:41: - 64:4c:4e:da:66:22:67:cf:b7:d7:10:ba:ed:f4:6d:43:59:00: - d0:82:1e:07 + email:ca+ca-rsa2012@esmtp.org + Signature Algorithm: sha1WithRSAEncryption + 9a:8f:4d:23:5b:30:80:e1:94:e4:66:9c:3a:17:8b:79:49:5b: + ec:5d:e5:a1:22:2d:71:37:a1:51:e7:1d:b1:0d:a9:9b:aa:a9: + 0d:c7:cd:d6:24:f9:e0:f0:57:be:4f:74:0c:4b:7a:42:4c:70: + 19:2e:8e:eb:cb:1b:00:26:27:eb:1c:42:33:d5:ec:32:b4:6c: + 7d:a3:04:a1:5c:00:49:c9:0d:4c:4d:28:37:06:22:77:ec:40: + 15:25:3a:23:84:ae:1f:da:90:dd:c9:dc:27:ee:7c:ec:e5:df: + b8:ba:1e:3f:ee:c2:91:a2:3f:22:92:1e:f3:06:7e:aa:e9:c3: + 11:2d:3d:2f:85:f7:fc:d7:e2:f8:6d:70:a6:40:62:69:e7:52: + ed:1b:19:38:72:86:08:a1:3d:47:c8:68:82:41:db:db:2a:52: + 25:d7:49:aa:9e:c5:83:22:7d:2f:0b:df:8c:90:2d:b5:aa:33: + c7:9b:e8:39:8f:bb:79:5b:13:2d:4e:a9:69:59:c7:09:26:e2: + b5:53:80:86:72:bb:7c:be:e9:46:5b:d8:b2:78:42:d6:5d:c3: + bb:3a:3b:5f:0f:e8:c3:60:fb:88:9f:3a:2b:9f:d3:7d:9f:c7: + 32:aa:4d:34:a7:66:a1:25:16:95:a6:69:e7:86:a3:5c:b9:b9: + df:58:05:e3 -----BEGIN CERTIFICATE----- -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 -gkOzfEFkTE7aZiJnz7fXELrt9G1DWQDQgh4H +BgNVBAsTA01UQTEiMCAGA1UEAxMZQ2xhdXMgQXNzbWFubiBDQSBSU0EgMjAxMjEm +MCQGCSqGSIb3DQEJARYXY2ErY2EtcnNhMjAxMkBlc210cC5vcmeCCQDxQbM9ur0z +STAMBgNVHRMEBTADAQH/MCIGA1UdEQQbMBmBF2NhK2NhLXJzYTIwMTJAZXNtdHAu +b3JnMCIGA1UdEgQbMBmBF2NhK2NhLXJzYTIwMTJAZXNtdHAub3JnMA0GCSqGSIb3 +DQEBBQUAA4IBAQCaj00jWzCA4ZTkZpw6F4t5SVvsXeWhIi1xN6FR5x2xDambqqkN +x83WJPng8Fe+T3QMS3pCTHAZLo7ryxsAJifrHEIz1ewytGx9owShXABJyQ1MTSg3 +BiJ37EAVJTojhK4f2pDdydwn7nzs5d+4uh4/7sKRoj8ikh7zBn6q6cMRLT0vhff8 +1+L4bXCmQGJp51LtGxk4coYIoT1HyGiCQdvbKlIl10mqnsWDIn0vC9+MkC21qjPH +m+g5j7t5WxMtTqlpWccJJuK1U4CGcrt8vulGW9iyeELWXcO7OjtfD+jDYPuInzor +n9N9n8cyqk00p2ahJRaVpmnnhqNcubnfWAXj -----END CERTIFICATE----- diff --git a/contrib/sendmail/PGPKEYS b/contrib/sendmail/PGPKEYS index 10bd809537a9..f56599285819 100644 --- a/contrib/sendmail/PGPKEYS +++ b/contrib/sendmail/PGPKEYS @@ -142,6 +142,143 @@ gpExpdV7qPrw9k01j5rod5PjZlG8zV0= -----END PGP PUBLIC KEY BLOCK----- Type Bits KeyID Created Expires Algorithm Use +pub 2048 5207CAD3 2013-01-02 ------- RSA Sign & Encrypt +fingerprint: B87D 4569 86F1 9484 07E5 CCB4 3D68 B25D 5207 CAD3 +uid Sendmail Signing Key/2013 <sendmail@Sendmail.ORG> + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.13 (Darwin) + +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 +=kpXE +-----END PGP PUBLIC KEY BLOCK----- + +Type Bits KeyID Created Expires Algorithm Use pub 2048 CEEEF43B 2011-12-14 ------- RSA Sign & Encrypt fingerprint: CA7A 8F39 A241 9FFF B0A9 AB27 8E5A E9FB CEEE F43B uid Sendmail Signing Key/2012 <sendmail@Sendmail.ORG> @@ -2298,4 +2435,4 @@ DnF3FZZEzV7oqPwC2jzv/1dD6GFhtgy0cnyoPGUJCyc= =nES8 -----END PGP PUBLIC KEY BLOCK----- -$Revision: 8.40 $, Last updated $Date: 2012/01/09 04:44:59 $ +$Revision: 8.43 $, Last updated $Date: 2013/01/18 17:40:21 $ diff --git a/contrib/sendmail/RELEASE_NOTES b/contrib/sendmail/RELEASE_NOTES index 1ded3922674e..be030f9fe5ae 100644 --- a/contrib/sendmail/RELEASE_NOTES +++ b/contrib/sendmail/RELEASE_NOTES @@ -1,11 +1,40 @@ SENDMAIL RELEASE NOTES - $Id: RELEASE_NOTES,v 8.2011 2012/12/21 18:42:16 ca Exp $ + $Id: RELEASE_NOTES,v 8.2024 2013/04/19 15:01:58 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.7/8.14.7 2013/04/21 + Drop support for IPv4-mapped IPv6 addresses to prevent the MTA + from using a mapped address over a legitimate IPv6 address + and to enforce the proper semantics over the IPv6 + connection. Problem noted by Ulrich Sporlein. + Fix a regression introduced in 8.14.6: the wrong list of + macros was sent to a milter in the EHLO stage. + Problem found by Fabrice Bellet, reported via RedHat + (Jaroslav Skarvada). + Fix handling of ORCPT parameter for DSNs: xtext decoding + was not performed and a wrong syntax check was applied + to the "addr-type" field. Problem noted by Dan Lukes + of Obludarium. + Fix handling of NUL characters in the MIME conversion functions + so that message bodies containing them will be sent + on properly. Note: this usually also affects mails + that are not converted as those functions are used + for other purposes too. Problem noted by Elchonon + Edelson of Lockheed Martin. + Do not perform "duplicate" elimination of recipients if they + resolve to the error mailer using a temporary failure + (4xy) via ruleset 0. Problem noted by Akira Takahashi + of IIJ. + CONTRIB: Updated version of etrn.pl script from John Beck + of Oracle. + Portability: + Unlike gcc, clang doesn't apply full prototypes to K&R + definitions. + 8.14.6/8.14.6 2012/12/23 Fix a regression introduced in 8.14.5: if a server offers two AUTH lines, the MTA would not read them after diff --git a/contrib/sendmail/cf/cf/submit.cf b/contrib/sendmail/cf/cf/submit.cf index 62c05e9c2d2c..fc1ff3c43839 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@wiz.smi.sendmail.com on Fri Dec 21 10:45:15 PST 2012 -##### in /extra/home/ca/sm-8.14.6/OpenSource/sendmail-8.14.6/cf/cf +##### built by ca@wiz.smi.sendmail.com on Fri Apr 19 08:04:44 PDT 2013 +##### in /extra/home/ca/sm-8.14.7/OpenSource/sendmail-8.14.7/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -114,7 +114,7 @@ D{MTAHost}[127.0.0.1] # Configuration version number -DZ8.14.6/Submit +DZ8.14.7/Submit ############### diff --git a/contrib/sendmail/cf/m4/version.m4 b/contrib/sendmail/cf/m4/version.m4 index ae084d179838..bc6fde29dc4d 100644 --- a/contrib/sendmail/cf/m4/version.m4 +++ b/contrib/sendmail/cf/m4/version.m4 @@ -1,6 +1,6 @@ divert(-1) # -# Copyright (c) 1998-2012 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2013 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.222 2012/12/19 05:11:43 ca Exp $') +VERSIONID(`$Id: version.m4,v 8.230 2013/04/18 15:07:16 ca Exp $') # divert(0) # Configuration version number -DZ8.14.6`'ifdef(`confCF_VERSION', `/confCF_VERSION') +DZ8.14.7`'ifdef(`confCF_VERSION', `/confCF_VERSION') diff --git a/contrib/sendmail/contrib/etrn.pl b/contrib/sendmail/contrib/etrn.pl index 2d50cb42c95b..f55137473cdb 100755 --- a/contrib/sendmail/contrib/etrn.pl +++ b/contrib/sendmail/contrib/etrn.pl @@ -1,22 +1,40 @@ -#!/usr/local/bin/perl -w +#!/usr/perl5/bin/perl -w +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# # # Copyright (c) 1996-2000 by John T. Beck <john@beck.org> # All rights reserved. # -# Copyright (c) 2000 by Sun Microsystems, Inc. -# All rights reserved. +# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. # -#ident "@(#)etrn.pl 1.1 00/09/06 SMI" -require 5.005; # minimal Perl version required +require 5.8.4; # minimal Perl version required use strict; +use warnings; use English; -# hardcoded constants, should work fine for BSD-based systems use Socket; use Getopt::Std; -use vars qw($opt_v); -my $sockaddr = 'S n a4 x8'; +our ($opt_v, $opt_b); # system requirements: # must have 'hostname' program. @@ -26,11 +44,12 @@ select(STDERR); chop(my $name = `hostname || uname -n`); -(my $hostname, my $aliases, my $type, my $len, undef) = gethostbyname($name); +my ($hostname) = (gethostbyname($name))[0]; -my $usage = "Usage: $PROGRAM_NAME [-v] host [args]"; -getopts('v'); +my $usage = "Usage: $PROGRAM_NAME [-bv] host [args]"; +getopts('bv'); my $verbose = $opt_v; +my $boot_check = $opt_b; my $server = shift(@ARGV); my @hosts = @ARGV; die $usage unless $server; @@ -86,24 +105,60 @@ if (!@hosts) { die "open $cwfile: $ERRNO"; } } + # Do this automatically if no client hosts are specified. + $boot_check = "yes"; } -($name, $aliases, my $proto) = getprotobyname('tcp'); -($name, $aliases, $port) = getservbyname($port, 'tcp') +my ($proto) = (getprotobyname('tcp'))[2]; +($port) = (getservbyname($port, 'tcp'))[2] unless $port =~ /^\d+/; +if ($boot_check) { + # first connect to localhost to verify that we can accept connections + print "verifying that localhost is accepting SMTP connections\n" + if ($verbose); + my $localhost_ok = 0; + ($name, my $laddr) = (gethostbyname('localhost'))[0, 4]; + (!defined($name)) && die "gethostbyname failed, unknown host localhost"; + + # get a connection + my $sinl = sockaddr_in($port, $laddr); + my $save_errno = 0; + for (my $num_tries = 1; $num_tries < 5; $num_tries++) { + socket(S, &PF_INET, &SOCK_STREAM, $proto) + || die "socket: $ERRNO"; + if (connect(S, $sinl)) { + &alarm("sending 'quit' to $server"); + print S "quit\n"; + alarm(0); + $localhost_ok = 1; + close(S); + alarm(0); + last; + } + print STDERR "localhost connect failed ($num_tries)\n"; + $save_errno = $ERRNO; + sleep(1 << $num_tries); + close(S); + alarm(0); + } + if (! $localhost_ok) { + die "could not connect to localhost: $save_errno\n"; + } +} + # look it up -($name, $aliases, $type, $len, my $thataddr) = gethostbyname($server); +($name, my $thataddr) = (gethostbyname($server))[0, 4]; (!defined($name)) && die "gethostbyname failed, unknown host $server"; - + # get a connection -my $that = pack($sockaddr, &AF_INET, $port, $thataddr); -socket(S, &AF_INET, &SOCK_STREAM, $proto) +my $sinr = sockaddr_in($port, $thataddr); +socket(S, &PF_INET, &SOCK_STREAM, $proto) || die "socket: $ERRNO"; print "server = $server\n" if (defined($verbose)); &alarm("connect to $server"); -if (! connect(S, $that)) { +if (! connect(S, $sinr)) { die "cannot connect to $server: $ERRNO\n"; } alarm(0); diff --git a/contrib/sendmail/doc/op/op.me b/contrib/sendmail/doc/op/op.me index 270d4cfedb2a..d48cb51a9e6e 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.749 2012/03/02 22:37:11 ca Exp $ +.\" $Id: op.me,v 8.751 2013/04/08 21:41:25 ca Exp $ .\" .\" eqn op.me | pic | troff -me .\" @@ -90,7 +90,7 @@ Sendmail, Inc. .de Ve Version \\$2 .. -.Ve $Revision: 8.749 $ +.Ve $Revision: 8.751 $ .rm Ve .sp For Sendmail Version 8.14 @@ -5547,9 +5547,6 @@ It can have primary types or full types (such as .q text/plain ). -The class is initialized to have -.q text/plain -only. .ip $=s contains the set of subtypes of message that can be treated recursively. By default it contains only @@ -6609,8 +6606,13 @@ Modifier Options (flags) for the client .)b The .i Addr ess -mask may be a numeric address in dot notation +mask may be a numeric address in IPv4 dot notation or IPv6 colon notation or a network name. +Note that if a network name is specified, +only the first IP address returned for it will be used. +This may cause indeterminate behavior for network names +that resolve to multiple addresses. +Therefore, use of an address is recommended. .i Modifier can be the following character: .(b @@ -6778,8 +6780,13 @@ The key is used for error messages and logging. The .i Addr ess -mask may be a numeric address in dot notation +mask may be a numeric address in IPv4 dot notation or IPv6 colon notation or a network name. +Note that if a network name is specified, +only the first IP address returned for it will be used. +This may cause indeterminate behavior for network names +that resolve to multiple addresses. +Therefore, use of an address is recommended. The .i Family key defaults to INET (IPv4). @@ -11471,7 +11478,7 @@ replace it with a blank sheet for double-sided output. .\".sz 10 .\"Eric Allman .\".sp -.\"Version $Revision: 8.749 $ +.\"Version $Revision: 8.751 $ .\".ce 0 .bp 3 .ce diff --git a/contrib/sendmail/include/sm/config.h b/contrib/sendmail/include/sm/config.h index 5ebe548d7459..045ca8a96793 100644 --- a/contrib/sendmail/include/sm/config.h +++ b/contrib/sendmail/include/sm/config.h @@ -6,7 +6,7 @@ * forth in the LICENSE file which can be found at the top level of * the sendmail distribution. * - * $Id: config.h,v 1.47 2004/10/26 21:41:07 gshapiro Exp $ + * $Id: config.h,v 1.48 2013/03/22 22:48:57 gshapiro Exp $ */ /* @@ -24,14 +24,16 @@ /* ** SM_CONF_STDBOOL_H is 1 if <stdbool.h> exists +** +** Note, unlike gcc, clang doesn't apply full prototypes to K&R definitions. */ # ifndef SM_CONF_STDBOOL_H -# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +# if !defined(__clang__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L # define SM_CONF_STDBOOL_H 1 -# else /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ +# else /* !defined(__clang__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ # define SM_CONF_STDBOOL_H 0 -# endif /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ +# endif /* !defined(__clang__) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L */ # endif /* ! SM_CONF_STDBOOL_H */ /* diff --git a/contrib/sendmail/include/sm/io.h b/contrib/sendmail/include/sm/io.h index d3f21d073686..5f1b720359fa 100644 --- a/contrib/sendmail/include/sm/io.h +++ b/contrib/sendmail/include/sm/io.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2002, 2004 Sendmail, Inc. and its suppliers. + * Copyright (c) 2000-2002, 2004, 2013 Sendmail, Inc. and its suppliers. * All rights reserved. * Copyright (c) 1990 * The Regents of the University of California. All rights reserved. @@ -11,7 +11,7 @@ * forth in the LICENSE file which can be found at the top level of * the sendmail distribution. * - * $Id: io.h,v 1.24 2004/03/03 19:14:49 ca Exp $ + * $Id: io.h,v 1.25 2013/03/12 15:24:49 ca Exp $ */ /*- @@ -269,7 +269,7 @@ int sm_io_close __P((SM_FILE_T *, int SM_NONVOLATILE)); SM_FILE_T *sm_io_dup __P((SM_FILE_T *)); int sm_io_eof __P((SM_FILE_T *)); int sm_io_error __P((SM_FILE_T *)); -char *sm_io_fgets __P((SM_FILE_T *, int, char *, int)); +int sm_io_fgets __P((SM_FILE_T *, int, char *, int)); int sm_io_flush __P((SM_FILE_T *, int SM_NONVOLATILE)); int PRINTFLIKE(3, 4) diff --git a/contrib/sendmail/libmilter/Makefile.m4 b/contrib/sendmail/libmilter/Makefile.m4 index 8f5da7d20fa9..5b95fbe32c09 100644 --- a/contrib/sendmail/libmilter/Makefile.m4 +++ b/contrib/sendmail/libmilter/Makefile.m4 @@ -1,4 +1,4 @@ -dnl $Id: Makefile.m4,v 8.88 2012/09/25 17:40:32 ca Exp $ +dnl $Id: Makefile.m4,v 8.92 2013/04/16 20:19:54 ca Exp $ include(confBUILDTOOLSDIR`/M4/switch.m4') dnl only required for compilation of EXTRAS diff --git a/contrib/sendmail/libmilter/sm_gethost.c b/contrib/sendmail/libmilter/sm_gethost.c index 8f2b339cf7ca..1bb44053c298 100644 --- a/contrib/sendmail/libmilter/sm_gethost.c +++ b/contrib/sendmail/libmilter/sm_gethost.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999-2001, 2004, 2010 Sendmail, Inc. and its suppliers. + * Copyright (c) 1999-2001, 2004, 2010, 2013 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: sm_gethost.c,v 8.29 2010/07/27 01:09:31 ca Exp $") +SM_RCSID("@(#)$Id: sm_gethost.c,v 8.30 2013/02/22 22:43:33 gshapiro Exp $") #include <sendmail.h> #if NETINET || NETINET6 @@ -101,7 +101,12 @@ mi_gethostbyname(name, family) # endif /* SOLARIS == 20300 || SOLARIS == 203 */ #else /* (SOLARIS > 10000 && SOLARIS < 20400) || (defined(SOLARIS) && SOLARIS < 204) || (defined(sony_news) && defined(__svr4)) */ # if NETINET6 - int flags = AI_DEFAULT|AI_ALL; +# ifndef SM_IPNODEBYNAME_FLAGS + /* For IPv4-mapped addresses, use: AI_DEFAULT|AI_ALL */ +# define SM_IPNODEBYNAME_FLAGS AI_ADDRCONFIG +# endif /* SM_IPNODEBYNAME_FLAGS */ + + int flags = SM_IPNODEBYNAME_FLAGS; int err; # endif /* NETINET6 */ diff --git a/contrib/sendmail/libsm/Makefile.m4 b/contrib/sendmail/libsm/Makefile.m4 index da5dd5519c41..4c7f63703f4c 100644 --- a/contrib/sendmail/libsm/Makefile.m4 +++ b/contrib/sendmail/libsm/Makefile.m4 @@ -1,4 +1,4 @@ -dnl $Id: Makefile.m4,v 1.72 2006/08/16 21:06:31 ca Exp $ +dnl $Id: Makefile.m4,v 1.73 2013/03/12 15:24:50 ca Exp $ define(`confREQUIRE_LIBUNIX') include(confBUILDTOOLSDIR`/M4/switch.m4') @@ -18,6 +18,7 @@ smcheck(`t-exc', `compile-run') smcheck(`t-rpool', `compile-run') smcheck(`t-string', `compile-run') smcheck(`t-smstdio', `compile-run') +smcheck(`t-fget', `compile-run') smcheck(`t-match', `compile-run') smcheck(`t-strio', `compile-run') smcheck(`t-heap', `compile-run') diff --git a/contrib/sendmail/libsm/cf.c b/contrib/sendmail/libsm/cf.c index d2178753ceda..6501c055cc00 100644 --- a/contrib/sendmail/libsm/cf.c +++ b/contrib/sendmail/libsm/cf.c @@ -9,7 +9,7 @@ */ #include <sm/gen.h> -SM_RCSID("@(#)$Id: cf.c,v 1.6 2001/09/11 04:04:47 gshapiro Exp $") +SM_RCSID("@(#)$Id: cf.c,v 1.7 2013/03/12 15:24:50 ca Exp $") #include <ctype.h> #include <errno.h> @@ -54,7 +54,7 @@ sm_cf_getopt(path, optc, optv) if (cfp == NULL) return errno; - while (sm_io_fgets(cfp, SM_TIME_DEFAULT, buf, sizeof(buf)) != NULL) + while (sm_io_fgets(cfp, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) { p = strchr(buf, '\n'); if (p != NULL) diff --git a/contrib/sendmail/libsm/fget.c b/contrib/sendmail/libsm/fget.c index 611748c6eca1..01c49da601ed 100644 --- a/contrib/sendmail/libsm/fget.c +++ b/contrib/sendmail/libsm/fget.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2001 Sendmail, Inc. and its suppliers. + * Copyright (c) 2000-2001, 2013 Sendmail, Inc. and its suppliers. * All rights reserved. * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. @@ -13,7 +13,7 @@ */ #include <sm/gen.h> -SM_RCSID("@(#)$Id: fget.c,v 1.24 2001/09/11 04:04:48 gshapiro Exp $") +SM_RCSID("@(#)$Id: fget.c,v 1.25 2013/03/12 15:24:50 ca Exp $") #include <stdlib.h> #include <string.h> #include <sm/io.h> @@ -33,31 +33,32 @@ SM_RCSID("@(#)$Id: fget.c,v 1.24 2001/09/11 04:04:48 gshapiro Exp $") ** n -- size of 'buf' ** ** Returns: -** success: returns value of 'buf' -** failure: NULL (no characters were read) -** timeout: NULL and errno set to EAGAIN +** success: number of characters +** failure: -1 +** timeout: -1 and errno set to EAGAIN ** ** Side Effects: ** may move the file pointer */ -char * +int sm_io_fgets(fp, timeout, buf, n) register SM_FILE_T *fp; int timeout; char *buf; register int n; { - register int len; - register char *s; - register unsigned char *p, *t; + int len, r; + char *s; + unsigned char *p, *t; SM_REQUIRE_ISA(fp, SmFileMagic); if (n <= 0) /* sanity check */ - return NULL; + return -1; s = buf; n--; /* leave space for NUL */ + r = 0; while (n > 0) { /* If the buffer is empty, refill it. */ @@ -73,7 +74,7 @@ sm_io_fgets(fp, timeout, buf, n) { /* EOF/error: stop with partial or no line */ if (s == buf) - return NULL; + return -1; break; } len = fp->f_r; @@ -93,18 +94,20 @@ sm_io_fgets(fp, timeout, buf, n) if (t != NULL) { len = ++t - p; + r += len; fp->f_r -= len; fp->f_p = t; (void) memcpy((void *) s, (void *) p, len); s[len] = 0; - return buf; + return r; } fp->f_r -= len; fp->f_p += len; (void) memcpy((void *) s, (void *) p, len); s += len; + r += len; n -= len; } *s = 0; - return buf; + return r; } diff --git a/contrib/sendmail/libsm/t-fget.c b/contrib/sendmail/libsm/t-fget.c new file mode 100644 index 000000000000..434debf10bb0 --- /dev/null +++ b/contrib/sendmail/libsm/t-fget.c @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2013 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. + */ + +#include <sm/gen.h> +SM_IDSTR(id, "@(#)$Id: t-fget.c,v 1.1 2013/03/12 15:24:50 ca Exp $") + +#include <sm/io.h> +#include <sm/string.h> +#include <sm/test.h> +#include <errno.h> + +void +check(char *msg, int l) +{ + SM_FILE_T *wfp, *rfp; + char buf[256]; + size_t n; + int r, i; + static char fn[] = "tfget"; + + wfp = sm_io_open(SmFtStdio, SM_TIME_DEFAULT, fn, + SM_IO_WRONLY_B, NULL); + SM_TEST(wfp != NULL); + for (i = 0; i < l; i++) + { + r = sm_io_putc(wfp, SM_TIME_DEFAULT, msg[i]); + SM_TEST(r >= 0); + } + r = sm_io_close(wfp, SM_TIME_DEFAULT); + SM_TEST(r == 0); + + rfp = sm_io_open(SmFtStdio, SM_TIME_DEFAULT, fn, + SM_IO_RDONLY_B, NULL); + SM_TEST(rfp != NULL); + n = sizeof(buf); + r = sm_io_fgets(rfp, SM_TIME_DEFAULT, buf, n); + if (l == 0) + { + SM_TEST(r == -1); + SM_TEST(errno == 0); + } + else + { + SM_TEST(r == l); + if (r != l) + fprintf(stderr, "buf='%s', in='%s', r=%d, l=%d\n", + buf, msg, r, l); + } + SM_TEST(memcmp(buf, msg, l) == 0); + r = sm_io_close(rfp, SM_TIME_DEFAULT); + SM_TEST(r == 0); +} + + +int +main(argc, argv) + int argc; + char **argv; +{ + char res[256]; + int l; + + sm_test_begin(argc, argv, "test fget"); + + check("", strlen("")); + check("\n", strlen("\n")); + check("test\n", strlen("test\n")); + + l = snprintf(res, sizeof(res), "%c%s\n", '\0', "test ing"); + check(res, l); + + l = snprintf(res, sizeof(res), "%c%s%c\n", '\0', "test ing", '\0'); + check(res, l); + + l = snprintf(res, sizeof(res), "%c%s%c%s\n", + '\0', "test ing", '\0', "eol"); + check(res, l); + + return sm_test_end(); +} diff --git a/contrib/sendmail/mailstats/mailstats.c b/contrib/sendmail/mailstats/mailstats.c index f8b57b37bf00..739f57e39096 100644 --- a/contrib/sendmail/mailstats/mailstats.c +++ b/contrib/sendmail/mailstats/mailstats.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers. + * Copyright (c) 1998-2002, 2013 Sendmail, Inc. and its suppliers. * All rights reserved. * Copyright (c) 1983 Eric P. Allman. All rights reserved. * Copyright (c) 1988, 1993 @@ -20,7 +20,7 @@ SM_IDSTR(copyright, Copyright (c) 1988, 1993\n\ The Regents of the University of California. All rights reserved.\n") -SM_IDSTR(id, "@(#)$Id: mailstats.c,v 8.100 2002/06/27 23:24:06 gshapiro Exp $") +SM_IDSTR(id, "@(#)$Id: mailstats.c,v 8.102 2013/03/12 15:24:50 ca Exp $") #include <unistd.h> #include <stddef.h> @@ -68,13 +68,14 @@ main(argc, argv) extern char *ctime(); extern char *optarg; extern int optind; +# define MSOPTS "cC:f:opP" cfile = getcfname(0, 0, SM_GET_SENDMAIL_CF, NULL); sfile = NULL; mnames = true; progmode = false; trunc = false; - while ((ch = getopt(argc, argv, "cC:f:opP")) != -1) + while ((ch = getopt(argc, argv, MSOPTS)) != -1) { switch (ch) { @@ -90,6 +91,7 @@ main(argc, argv) sfile = optarg; break; + case 'o': mnames = false; break; @@ -102,6 +104,7 @@ main(argc, argv) progmode = true; break; + case '?': default: usage: @@ -131,7 +134,7 @@ main(argc, argv) (void) sm_strlcpy(mtable[mno++], "*file*", MNAMELEN + 1); (void) sm_strlcpy(mtable[mno++], "*include*", MNAMELEN + 1); - while (sm_io_fgets(cfp, SM_TIME_DEFAULT, buf, sizeof(buf)) != NULL) + while (sm_io_fgets(cfp, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) { register char *b; char *s; @@ -270,6 +273,7 @@ main(argc, argv) } } + if (progmode) { (void) time(&now); diff --git a/contrib/sendmail/makemap/makemap.c b/contrib/sendmail/makemap/makemap.c index f06ed0760080..f494ba03e2ec 100644 --- a/contrib/sendmail/makemap/makemap.c +++ b/contrib/sendmail/makemap/makemap.c @@ -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.180 2010/11/23 02:35:08 gshapiro Exp $") +SM_IDSTR(id, "@(#)$Id: makemap.c,v 8.181 2013/03/12 15:24:51 ca Exp $") #include <sys/types.h> @@ -242,7 +242,7 @@ main(argc, argv) cfile, sm_errstring(errno)); exit(EX_NOINPUT); } - while (sm_io_fgets(cfp, SM_TIME_DEFAULT, buf, sizeof(buf)) != NULL) + while (sm_io_fgets(cfp, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) { register char *b; @@ -392,7 +392,7 @@ main(argc, argv) { lineno = 0; while (sm_io_fgets(smioin, SM_TIME_DEFAULT, ibuf, sizeof ibuf) - != NULL) + >= 0) { register char *p; diff --git a/contrib/sendmail/praliases/praliases.c b/contrib/sendmail/praliases/praliases.c index d0ee54e37a07..04ad9f4fae55 100644 --- a/contrib/sendmail/praliases/praliases.c +++ b/contrib/sendmail/praliases/praliases.c @@ -20,7 +20,7 @@ SM_IDSTR(copyright, Copyright (c) 1988, 1993\n\ The Regents of the University of California. All rights reserved.\n") -SM_IDSTR(id, "@(#)$Id: praliases.c,v 8.96 2008/07/10 20:13:10 ca Exp $") +SM_IDSTR(id, "@(#)$Id: praliases.c,v 8.97 2013/03/12 15:24:51 ca Exp $") #include <sys/types.h> #include <ctype.h> @@ -122,7 +122,7 @@ main(argc, argv) exit(EX_NOINPUT); } - while (sm_io_fgets(cfp, SM_TIME_DEFAULT, buf, sizeof(buf)) != NULL) + while (sm_io_fgets(cfp, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) { register char *b, *p; diff --git a/contrib/sendmail/rmail/rmail.c b/contrib/sendmail/rmail/rmail.c index 5cdc9bb14213..bb1508e6e14b 100644 --- a/contrib/sendmail/rmail/rmail.c +++ b/contrib/sendmail/rmail/rmail.c @@ -20,7 +20,7 @@ SM_IDSTR(copyright, Copyright (c) 1988, 1993\n\ The Regents of the University of California. All rights reserved.\n") -SM_IDSTR(id, "@(#)$Id: rmail.c,v 8.61 2001/09/18 21:45:29 gshapiro Exp $") +SM_IDSTR(id, "@(#)$Id: rmail.c,v 8.62 2013/03/12 15:24:52 ca Exp $") /* * RMAIL -- UUCP mail server. @@ -136,7 +136,7 @@ main(argc, argv) { /* Get and nul-terminate the line. */ if (sm_io_fgets(smioin, SM_TIME_DEFAULT, lbuf, - sizeof(lbuf)) == NULL) + sizeof(lbuf)) < 0) err(EX_DATAERR, "no data"); if ((p = strchr(lbuf, '\n')) == NULL) err(EX_DATAERR, "line too long"); @@ -385,7 +385,7 @@ main(argc, argv) { (void) sm_io_fprintf(fp, SM_TIME_DEFAULT, "%s", lbuf); } while (sm_io_fgets(smioin, SM_TIME_DEFAULT, lbuf, - sizeof(lbuf)) != NULL); + sizeof(lbuf)) >= 0); if (sm_io_error(smioin)) err(EX_TEMPFAIL, "stdin: %s", sm_errstring(errno)); diff --git a/contrib/sendmail/src/Makefile.m4 b/contrib/sendmail/src/Makefile.m4 index 5908b97e6baa..a29c18e4d9b4 100644 --- a/contrib/sendmail/src/Makefile.m4 +++ b/contrib/sendmail/src/Makefile.m4 @@ -1,4 +1,4 @@ -dnl $Id: Makefile.m4,v 8.132 2012/09/11 20:02:44 ca Exp $ +dnl $Id: Makefile.m4,v 8.139 2013/04/17 17:15:54 ca Exp $ include(confBUILDTOOLSDIR`/M4/switch.m4') define(`confREQUIRE_LIBSM', `true') diff --git a/contrib/sendmail/src/alias.c b/contrib/sendmail/src/alias.c index 3eae4baf4bbf..57d0b0811583 100644 --- a/contrib/sendmail/src/alias.c +++ b/contrib/sendmail/src/alias.c @@ -13,7 +13,7 @@ #include <sendmail.h> -SM_RCSID("@(#)$Id: alias.c,v 8.219 2006/10/24 18:04:09 ca Exp $") +SM_RCSID("@(#)$Id: alias.c,v 8.220 2013/03/12 15:24:52 ca Exp $") #define SEPARATOR ':' # define ALIAS_SPEC_SEPARATORS " ,/:" @@ -657,7 +657,7 @@ readaliases(map, af, announcestats, logstats) LineNumber = 0; naliases = bytes = longest = 0; skipping = false; - while (sm_io_fgets(af, SM_TIME_DEFAULT, line, sizeof(line)) != NULL) + while (sm_io_fgets(af, SM_TIME_DEFAULT, line, sizeof(line)) >= 0) { int lhssize, rhssize; int c; @@ -670,7 +670,7 @@ readaliases(map, af, announcestats, logstats) { p--; if (sm_io_fgets(af, SM_TIME_DEFAULT, p, - SPACELEFT(line, p)) == NULL) + SPACELEFT(line, p)) < 0) break; LineNumber++; p = strchr(p, '\n'); @@ -780,7 +780,7 @@ readaliases(map, af, announcestats, logstats) /* read continuation line */ if (sm_io_fgets(af, SM_TIME_DEFAULT, p, - sizeof(line) - (p-line)) == NULL) + sizeof(line) - (p-line)) < 0) break; LineNumber++; diff --git a/contrib/sendmail/src/collect.c b/contrib/sendmail/src/collect.c index c8dcb8af6cc0..1b7b5f5fd74d 100644 --- a/contrib/sendmail/src/collect.c +++ b/contrib/sendmail/src/collect.c @@ -13,7 +13,7 @@ #include <sendmail.h> -SM_RCSID("@(#)$Id: collect.c,v 8.285 2012/06/14 23:54:02 ca Exp $") +SM_RCSID("@(#)$Id: collect.c,v 8.286 2013/03/15 17:54:12 ca Exp $") static void eatfrom __P((char *volatile, ENVELOPE *)); static void collect_doheader __P((ENVELOPE *)); @@ -300,6 +300,9 @@ collect(fp, smtpmode, hdrp, e, rsetsize) unsigned char *pbp; unsigned char peekbuf[8]; char bufbuf[MAXLINE]; +#if _FFR_REJECT_NUL_BYTE + bool hasNUL; /* has at least one NUL input byte */ +#endif /* _FFR_REJECT_NUL_BYTE */ df = NULL; ignrdot = smtpmode ? false : IgnrDot; @@ -315,6 +318,9 @@ collect(fp, smtpmode, hdrp, e, rsetsize) hdrslen = 0; numhdrs = 0; HasEightBits = false; +#if _FFR_REJECT_NUL_BYTE + hasNUL = false; +#endif /* _FFR_REJECT_NUL_BYTE */ buf = bp = bufbuf; buflen = sizeof(bufbuf); pbp = peekbuf; @@ -403,6 +409,10 @@ collect(fp, smtpmode, hdrp, e, rsetsize) SM_TIME_DEFAULT, c); } +#if _FFR_REJECT_NUL_BYTE + if (c == '\0') + hasNUL = true; +#endif /* _FFR_REJECT_NUL_BYTE */ if (c == SM_IO_EOF) goto readerr; if (SevenBitInput) @@ -893,6 +903,14 @@ readerr: e->e_bodytype = "7BIT"; } +#if _FFR_REJECT_NUL_BYTE + if (hasNUL && RejectNUL) + { + e->e_status = "5.6.1"; + usrerrenh(e->e_status, "554 NUL byte not allowed"); + } +#endif /* _FFR_REJECT_NUL_BYTE */ + if (SuperSafe == SAFE_REALLY && !bitset(EF_FATALERRS, e->e_flags)) { char *dfname = queuename(e, DATAFL_LETTER); diff --git a/contrib/sendmail/src/conf.c b/contrib/sendmail/src/conf.c index 9130455edfdf..edfa0c2bf664 100644 --- a/contrib/sendmail/src/conf.c +++ b/contrib/sendmail/src/conf.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2012 Sendmail, Inc. and its suppliers. + * Copyright (c) 1998-2013 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: conf.c,v 8.1176 2012/12/07 03:59:54 ca Exp $") +SM_RCSID("@(#)$Id: conf.c,v 8.1182 2013/04/05 17:39:09 ca Exp $") #include <sm/sendmail.h> #include <sendmail/pathnames.h> @@ -967,7 +967,7 @@ switch_map_find(service, maptype, mapreturn) char buf[MAXLINE]; while (sm_io_fgets(fp, SM_TIME_DEFAULT, buf, - sizeof(buf)) != NULL) + sizeof(buf)) >= 0) { register char *p; @@ -2848,7 +2848,7 @@ uname(name) char buf[MAXLINE]; while (sm_io_fgets(file, SM_TIME_DEFAULT, - buf, sizeof(buf)) != NULL) + buf, sizeof(buf)) >= 0) { if (sm_io_sscanf(buf, "#define sysname \"%*[^\"]\"", NODE_LENGTH, name->nodename) > 0) @@ -3222,7 +3222,7 @@ usershellok(user, shell) return false; } - while (sm_io_fgets(shellf, SM_TIME_DEFAULT, buf, sizeof(buf)) != NULL) + while (sm_io_fgets(shellf, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) { register char *p, *q; @@ -4294,7 +4294,12 @@ sm_gethostbyname(name, family) #else /* (SOLARIS > 10000 && SOLARIS < 20400) || (defined(SOLARIS) && SOLARIS < 204) || (defined(sony_news) && defined(__svr4)) */ int nmaps; # if NETINET6 - int flags = AI_DEFAULT|AI_ALL; +# ifndef SM_IPNODEBYNAME_FLAGS + /* For IPv4-mapped addresses, use: AI_DEFAULT|AI_ALL */ +# define SM_IPNODEBYNAME_FLAGS AI_ADDRCONFIG +# endif /* SM_IPNODEBYNAME_FLAGS */ + + int flags = SM_IPNODEBYNAME_FLAGS; int err; # endif /* NETINET6 */ char *maptype[MAXMAPSTACK]; @@ -6004,6 +6009,23 @@ char *OsCompileOptions[] = #if SECUREWARE "SECUREWARE", #endif /* SECUREWARE */ +#if SFS_TYPE == SFS_4ARGS + "SFS_4ARGS", +#elif SFS_TYPE == SFS_MOUNT + "SFS_MOUNT", +#elif SFS_TYPE == SFS_NONE + "SFS_NONE", +#elif SFS_TYPE == SFS_NT + "SFS_NT", +#elif SFS_TYPE == SFS_STATFS + "SFS_STATFS", +#elif SFS_TYPE == SFS_STATVFS + "SFS_STATVFS", +#elif SFS_TYPE == SFS_USTAT + "SFS_USTAT", +#elif SFS_TYPE == SFS_VFS + "SFS_VFS", +#endif #if SHARE_V1 "SHARE_V1", #endif /* SHARE_V1 */ @@ -6184,6 +6206,10 @@ char *FFRCompileOptions[] = "_FFR_GETHBN_ExFILE", #endif /* _FFR_GETHBN_ExFILE */ +#if _FFR_FIPSMODE + /* FIPSMode (if supported by OpenSSL library) */ + "_FFR_FIPSMODE", +#endif /* _FFR_FIPSMODE */ #if _FFR_FIX_DASHT /* ** If using -t, force not sending to argv recipients, even @@ -6363,6 +6389,10 @@ char *FFRCompileOptions[] = "_FFR_REDIRECTEMPTY", #endif /* _FFR_REDIRECTEMPTY */ +#if _FFR_REJECT_NUL_BYTE + /* reject NUL bytes in body */ + "_FFR_REJECT_NUL_BYTE", +#endif /* _FFR_REJECT_NUL_BYTE */ #if _FFR_RESET_MACRO_GLOBALS /* Allow macro 'j' to be set dynamically via rulesets. */ "_FFR_RESET_MACRO_GLOBALS", diff --git a/contrib/sendmail/src/control.c b/contrib/sendmail/src/control.c index 0b525f71472e..4d1074092c74 100644 --- a/contrib/sendmail/src/control.c +++ b/contrib/sendmail/src/control.c @@ -10,7 +10,7 @@ #include <sendmail.h> -SM_RCSID("@(#)$Id: control.c,v 8.128 2006/08/15 23:24:56 ca Exp $") +SM_RCSID("@(#)$Id: control.c,v 8.129 2013/03/12 15:24:52 ca Exp $") #include <sm/fdset.h> @@ -301,7 +301,7 @@ control_command(sock, e) (void) sm_io_setvbuf(s, SM_TIME_DEFAULT, NULL, SM_IO_NBF, SM_IO_BUFSIZ); - if (sm_io_fgets(s, SM_TIME_DEFAULT, inp, sizeof(inp)) == NULL) + if (sm_io_fgets(s, SM_TIME_DEFAULT, inp, sizeof(inp)) < 0) { (void) sm_io_close(s, SM_TIME_DEFAULT); exit(EX_IOERR); diff --git a/contrib/sendmail/src/deliver.c b/contrib/sendmail/src/deliver.c index 581a98da9a0f..1d5eddd5f29d 100644 --- a/contrib/sendmail/src/deliver.c +++ b/contrib/sendmail/src/deliver.c @@ -14,7 +14,7 @@ #include <sendmail.h> #include <sm/time.h> -SM_RCSID("@(#)$Id: deliver.c,v 8.1027 2012/12/19 02:49:21 ca Exp $") +SM_RCSID("@(#)$Id: deliver.c,v 8.1028 2013/01/02 18:57:42 ca Exp $") #if HASSETUSERCONTEXT # include <login_cap.h> @@ -6159,7 +6159,7 @@ starttls(m, mci, e) sm_syslog(LOG_ERR, NOQID, "STARTTLS=client, error: SSL_new failed"); if (LogLevel > 9) - tlslogerr("client"); + tlslogerr(LOG_WARNING, "client"); } return EX_SOFTWARE; } @@ -6178,7 +6178,7 @@ starttls(m, mci, e) "STARTTLS=client, error: SSL_set_xfd failed=%d", result); if (LogLevel > 9) - tlslogerr("client"); + tlslogerr(LOG_WARNING, "client"); } return EX_SOFTWARE; } @@ -6208,7 +6208,7 @@ ssl_retry: result, sr == NULL ? "unknown" : sr, ssl_err, errno, i); if (LogLevel > 9) - tlslogerr("client"); + tlslogerr(LOG_WARNING, "client"); } SSL_free(clt_ssl); diff --git a/contrib/sendmail/src/main.c b/contrib/sendmail/src/main.c index 2294063af44b..75c8be150e94 100644 --- a/contrib/sendmail/src/main.c +++ b/contrib/sendmail/src/main.c @@ -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.981 2012/06/14 23:54:02 ca Exp $") +SM_RCSID("@(#)$Id: main.c,v 8.983 2013/03/12 15:24:52 ca Exp $") #if NETINET || NETINET6 @@ -2103,7 +2103,7 @@ main(argc, argv, envp) "> "); (void) sm_io_flush(smioout, SM_TIME_DEFAULT); if (sm_io_fgets(smioin, SM_TIME_DEFAULT, buf, - sizeof(buf)) == NULL) + sizeof(buf)) < 0) testmodeline("/quit", &MainEnvelope); p = strchr(buf, '\n'); if (p != NULL) @@ -2153,7 +2153,13 @@ main(argc, argv, envp) if (tls_ok) { /* basic TLS initialization */ - tls_ok = init_tls_library(); + tls_ok = init_tls_library(FipsMode); + if (!tls_ok && FipsMode) + { + (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, + "ERROR: FIPSMode failed to initialize\n"); + exit(EX_USAGE); + } } if (!tls_ok && (OpMode == MD_QUEUERUN || OpMode == MD_DELIVER)) diff --git a/contrib/sendmail/src/map.c b/contrib/sendmail/src/map.c index 01d79ff2a364..ad7d8185be2d 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.709 2012/04/20 18:47:09 ca Exp $") +SM_RCSID("@(#)$Id: map.c,v 8.711 2013/03/12 15:24:52 ca Exp $") #if LDAPMAP # include <sm/ldap.h> @@ -2883,6 +2883,9 @@ nis_getcanonname(name, hbsize, statp) # undef T_UNSPEC /* symbol conflict in nis.h -> ... -> sys/tiuser.h */ # include <rpcsvc/nis.h> # include <rpcsvc/nislib.h> +# ifndef NIS_TABLE_OBJ +# define NIS_TABLE_OBJ TABLE_OBJ +# endif /* NIS_TABLE_OBJ */ # define EN_col(col) zo_data.objdata_u.en_data.en_cols.en_cols_val[(col)].ec_value.ec_value_val # define COL_NAME(res,i) ((res->objects.objects_val)->TA_data.ta_cols.ta_cols_val)[i].tc_name @@ -2970,7 +2973,7 @@ nisplus_map_open(map, mode) } if (NIS_RES_NUMOBJ(res) != 1 || - (NIS_RES_OBJECT(res)->zo_data.zo_type != TABLE_OBJ)) + (NIS_RES_OBJECT(res)->zo_data.zo_type != NIS_TABLE_OBJ)) { if (tTd(38, 10)) sm_dprintf("nisplus_map_open: %s is not a table\n", qbuf); @@ -5834,7 +5837,7 @@ text_map_lookup(map, name, av, statp) key_idx = map->map_keycolno; delim = map->map_coldelim; while (sm_io_fgets(f, SM_TIME_DEFAULT, - linebuf, sizeof(linebuf)) != NULL) + linebuf, sizeof(linebuf)) >= 0) { char *p; @@ -5908,7 +5911,7 @@ text_getcanonname(name, hbsize, statp) found = false; while (!found && sm_io_fgets(f, SM_TIME_DEFAULT, - linebuf, sizeof(linebuf)) != NULL) + linebuf, sizeof(linebuf)) >= 0) { char *p = strpbrk(linebuf, "#\n"); diff --git a/contrib/sendmail/src/mci.c b/contrib/sendmail/src/mci.c index 7b171677496d..6e635a8e2fbf 100644 --- a/contrib/sendmail/src/mci.c +++ b/contrib/sendmail/src/mci.c @@ -13,7 +13,7 @@ #include <sendmail.h> -SM_RCSID("@(#)$Id: mci.c,v 8.223 2010/03/10 04:35:28 ca Exp $") +SM_RCSID("@(#)$Id: mci.c,v 8.224 2013/03/12 15:24:53 ca Exp $") #if NETINET || NETINET6 # include <arpa/inet.h> @@ -972,7 +972,7 @@ mci_read_persistent(fp, mci) sm_io_rewind(fp, SM_TIME_DEFAULT); ver = -1; LineNumber = 0; - while (sm_io_fgets(fp, SM_TIME_DEFAULT, buf, sizeof(buf)) != NULL) + while (sm_io_fgets(fp, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) { LineNumber++; p = strchr(buf, '\n'); diff --git a/contrib/sendmail/src/milter.c b/contrib/sendmail/src/milter.c index a403a1643516..958b608c2324 100644 --- a/contrib/sendmail/src/milter.c +++ b/contrib/sendmail/src/milter.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999-2009 Sendmail, Inc. and its suppliers. + * Copyright (c) 1999-2009, 2012, 2013 Sendmail, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set @@ -10,7 +10,7 @@ #include <sendmail.h> -SM_RCSID("@(#)$Id: milter.c,v 8.279 2012/11/16 20:25:03 ca Exp $") +SM_RCSID("@(#)$Id: milter.c,v 8.280 2013/01/16 18:48:36 ca Exp $") #if MILTER # include <sm/sendmail.h> @@ -2184,7 +2184,7 @@ milter_send_command(m, cmd, data, sz, e, state, where) ** cmd -- command to send. ** data -- optional command data. ** sz -- length of buf. -** macros -- macros to send for filter smfi_getsymval(). +** stage -- index of macros to send for filter smfi_getsymval(). ** e -- current envelope (for macro access). ** state -- return state word. ** where -- description of calling function (logging). @@ -2328,7 +2328,6 @@ milter_getsymlist(m, buf, rlen, offset) case SMFIM_DATA: SM_ASSERT(m->mf_idx > 0 && m->mf_idx < MAXFILTERS); macros = MilterMacros[i][m->mf_idx]; - m->mf_lflags |= MI_LFLAGS_SYM(i); len = strlen(buf + offset); if (len > 0) diff --git a/contrib/sendmail/src/mime.c b/contrib/sendmail/src/mime.c index af71d7982e82..f0fb54a8f921 100644 --- a/contrib/sendmail/src/mime.c +++ b/contrib/sendmail/src/mime.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2003, 2006 Sendmail, Inc. and its suppliers. + * Copyright (c) 1998-2003, 2006, 2013 Sendmail, Inc. and its suppliers. * All rights reserved. * Copyright (c) 1994, 1996-1997 Eric P. Allman. All rights reserved. * Copyright (c) 1994 @@ -14,7 +14,7 @@ #include <sendmail.h> #include <string.h> -SM_RCSID("@(#)$Id: mime.c,v 8.147 2007/09/26 23:29:11 ca Exp $") +SM_RCSID("@(#)$Id: mime.c,v 8.148 2013/03/12 15:24:53 ca Exp $") /* ** MIME support. @@ -107,6 +107,7 @@ mime8to7(mci, header, e, boundaries, flags, level) { register char *p; int linelen; + int blen; int bt; off_t offset; size_t sectionsize, sectionhighbits; @@ -322,13 +323,13 @@ mime8to7(mci, header, e, boundaries, flags, level) goto writeerr; mci->mci_flags &= ~MCIF_INHEADER; bt = MBT_FINAL; - while (sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, sizeof(buf)) - != NULL) + while ((blen = sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, + sizeof(buf))) >= 0) { bt = mimeboundary(buf, boundaries); if (bt != MBT_NOTSEP) break; - if (!putxline(buf, strlen(buf), mci, + if (!putxline(buf, blen, mci, PXLF_MAPFROM|PXLF_STRIP8BIT)) goto writeerr; if (tTd(43, 99)) @@ -366,13 +367,13 @@ mime8to7(mci, header, e, boundaries, flags, level) mci->mci_flags &= ~MCIF_INMIME; /* skip the late "comment" epilogue */ - while (sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, sizeof(buf)) - != NULL) + while ((blen = sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, + sizeof(buf))) >= 0) { bt = mimeboundary(buf, boundaries); if (bt != MBT_NOTSEP) break; - if (!putxline(buf, strlen(buf), mci, + if (!putxline(buf, blen, mci, PXLF_MAPFROM|PXLF_STRIP8BIT)) goto writeerr; if (tTd(43, 99)) @@ -443,16 +444,16 @@ mime8to7(mci, header, e, boundaries, flags, level) DATAFL_LETTER, e->e_id); /* do a scan of this body type to count character types */ - while (sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, sizeof(buf)) - != NULL) + while ((blen = sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, + sizeof(buf))) >= 0) { if (mimeboundary(buf, boundaries) != MBT_NOTSEP) break; - for (p = buf; *p != '\0'; p++) + for (i = 0; i < blen; i++) { /* count bytes with the high bit set */ sectionsize++; - if (bitset(0200, *p)) + if (bitset(0200, buf[i])) sectionhighbits++; } @@ -522,8 +523,8 @@ mime8to7(mci, header, e, boundaries, flags, level) if (!putline("", mci)) goto writeerr; mci->mci_flags &= ~MCIF_INHEADER; - while (sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, sizeof(buf)) - != NULL) + while ((blen = sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, + sizeof(buf))) >= 0) { if (!bitset(MCIF_INLONGLINE, mci->mci_flags)) { @@ -531,7 +532,7 @@ mime8to7(mci, header, e, boundaries, flags, level) if (bt != MBT_NOTSEP) break; } - if (!putxline(buf, strlen(buf), mci, + if (!putxline(buf, blen, mci, PXLF_MAPFROM|PXLF_NOADDEOL)) goto writeerr; } @@ -1033,7 +1034,7 @@ mime7to8(mci, header, e) HDR *header; register ENVELOPE *e; { - int pxflags; + int pxflags, blen; register char *p; char *cte; char **pvp; @@ -1066,10 +1067,10 @@ mime7to8(mci, header, e) if (!putline("", mci)) goto writeerr; mci->mci_flags &= ~MCIF_INHEADER; - while (sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, sizeof(buf)) - != NULL) + while ((blen = sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, + sizeof(buf))) >= 0) { - if (!putline(buf, mci)) + if (!putxline(buf, blen, mci, PXLF_MAPFROM)) goto writeerr; } return true; @@ -1177,7 +1178,7 @@ mime7to8(mci, header, e) pxflags |= PXLF_NOADDEOL; fbufp = fbuf; while (sm_io_fgets(e->e_dfp, SM_TIME_DEFAULT, buf, - sizeof(buf)) != NULL) + sizeof(buf)) >= 0) { off = mime_fromqp((unsigned char *) buf, &fbufp, &fbuf[MAXLINE] - fbufp); diff --git a/contrib/sendmail/src/parseaddr.c b/contrib/sendmail/src/parseaddr.c index 930f61da0d78..682a372db0ab 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.405 2012/02/27 22:49:08 ca Exp $") +SM_RCSID("@(#)$Id: parseaddr.c,v 8.406 2013/04/17 16:53:01 ca Exp $") #include <sm/sendmail.h> #include "map.h" @@ -2350,6 +2350,14 @@ sameaddr(a, b) if (a->q_mailer != b->q_mailer) return false; + /* + ** Addresses resolving to error mailer + ** should not be considered identical + */ + + if (a->q_mailer == &errormailer) + return false; + /* if the user isn't the same, we can drop out */ if (strcmp(a->q_user, b->q_user) != 0) return false; diff --git a/contrib/sendmail/src/queue.c b/contrib/sendmail/src/queue.c index 70b2965b88cb..af60d5ebb2d8 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.997 2012/06/14 23:54:03 ca Exp $") +SM_RCSID("@(#)$Id: queue.c,v 8.998 2013/03/12 15:24:53 ca Exp $") #include <dirent.h> @@ -2746,7 +2746,7 @@ gatherq(qgrp, qdir, doall, full, more, pnentries) i |= NEED_QUARANTINE; while (cf != NULL && i != 0 && sm_io_fgets(cf, SM_TIME_DEFAULT, lbuf, - sizeof(lbuf)) != NULL) + sizeof(lbuf)) >= 0) { int c; time_t age; @@ -4981,7 +4981,7 @@ print_single_queue(qgrp, qdir) quarmsg[0] = '\0'; statmsg[0] = bodytype[0] = '\0'; qfver = 0; - while (sm_io_fgets(f, SM_TIME_DEFAULT, buf, sizeof(buf)) != NULL) + while (sm_io_fgets(f, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) { register int i; register char *p; diff --git a/contrib/sendmail/src/readcf.c b/contrib/sendmail/src/readcf.c index 7bc70c2ca1d2..2c8da0b9b2d5 100644 --- a/contrib/sendmail/src/readcf.c +++ b/contrib/sendmail/src/readcf.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2006, 2008-2010 Sendmail, Inc. and its suppliers. + * Copyright (c) 1998-2006, 2008-2010, 2013 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.684 2011/03/15 17:29:29 guenther Exp $") +SM_RCSID("@(#)$Id: readcf.c,v 8.690 2013/03/15 17:54:12 ca Exp $") #if NETINET || NETINET6 # include <arpa/inet.h> @@ -1141,7 +1141,7 @@ fileclass(class, filename, fmt, ismap, safe, optional) return; } - while (sm_io_fgets(f, SM_TIME_DEFAULT, buf, sizeof(buf)) != NULL) + while (sm_io_fgets(f, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) { #if SCANF char wordbuf[MAXLINE + 1]; @@ -2284,6 +2284,14 @@ static struct optioninfo # define O_INETQOS 0xe7 /* reserved for FFR_QOS */ { "InetQoS", O_INETQOS, OI_NONE }, #endif +#if STARTTLS && _FFR_FIPSMODE +# define O_FIPSMODE 0xe8 + { "FIPSMode", O_FIPSMODE, OI_NONE }, +#endif /* STARTTLS && _FFR_FIPSMODE */ +#if _FFR_REJECT_NUL_BYTE +# define O_REJECTNUL 0xe9 + { "RejectNUL", O_REJECTNUL, OI_SAFE }, +#endif /* _FFR_REJECT_NUL_BYTE */ { NULL, '\0', OI_NONE } }; @@ -3862,6 +3870,11 @@ setoption(opt, val, safe, sticky, e) break; #endif /* STARTTLS */ +#if STARTTLS && _FFR_FIPSMODE + case O_FIPSMODE: + FipsMode = atobool(val); + break; +#endif /* STARTTLS && _FFR_FIPSMODE */ case O_CLIENTPORT: setclientoptions(val); @@ -4016,6 +4029,12 @@ setoption(opt, val, safe, sticky, e) break; #endif /* _FFR_BADRCPT_SHUTDOWN */ +#if _FFR_REJECT_NUL_BYTE + case O_REJECTNUL: + RejectNUL = atobool(val); + break; +#endif /* _FFR_REJECT_NUL_BYTE */ + default: if (tTd(37, 1)) { diff --git a/contrib/sendmail/src/recipient.c b/contrib/sendmail/src/recipient.c index 40646325bfbb..9f4c3f6e66d7 100644 --- a/contrib/sendmail/src/recipient.c +++ b/contrib/sendmail/src/recipient.c @@ -13,7 +13,7 @@ #include <sendmail.h> -SM_RCSID("@(#)$Id: recipient.c,v 8.349 2007/07/10 17:01:22 ca Exp $") +SM_RCSID("@(#)$Id: recipient.c,v 8.350 2013/03/12 15:24:54 ca Exp $") static void includetimeout __P((int)); static ADDRESS *self_reference __P((ADDRESS *)); @@ -1824,7 +1824,7 @@ resetuid: LineNumber = 0; ctladdr->q_flags &= ~QSELFREF; nincludes = 0; - while (sm_io_fgets(fp, SM_TIME_DEFAULT, buf, sizeof(buf)) != NULL && + while (sm_io_fgets(fp, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0 && !maxreached) { fixcrlf(buf, true); diff --git a/contrib/sendmail/src/savemail.c b/contrib/sendmail/src/savemail.c index 241328148d00..33a897aee9e5 100644 --- a/contrib/sendmail/src/savemail.c +++ b/contrib/sendmail/src/savemail.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2003, 2006 Sendmail, Inc. and its suppliers. + * Copyright (c) 1998-2003, 2006, 2012, 2013 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: savemail.c,v 8.315 2012/02/27 17:43:03 gshapiro Exp $") +SM_RCSID("@(#)$Id: savemail.c,v 8.318 2013/03/12 15:24:54 ca Exp $") static bool errbody __P((MCI *, ENVELOPE *, char *)); static bool pruneroute __P((char *)); @@ -204,7 +204,7 @@ savemail(e, sendbody) (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, "Transcript follows:\r\n"); while (sm_io_fgets(e->e_xfp, SM_TIME_DEFAULT, - buf, sizeof(buf)) != NULL && + buf, sizeof(buf)) >= 0 && !sm_io_error(smioout)) (void) sm_io_fputs(smioout, SM_TIME_DEFAULT, @@ -866,7 +866,7 @@ errbody(mci, e, separator) if (xfile != NULL) { while (sm_io_fgets(xfile, SM_TIME_DEFAULT, buf, - sizeof(buf)) != NULL) + sizeof(buf)) >= 0) { int lbs; bool putok; @@ -1042,18 +1042,20 @@ errbody(mci, e, separator) } else { + int blen; + printheader = true; (void) bfrewind(e->e_parent->e_xfp); if (e->e_xfp != NULL) (void) sm_io_flush(e->e_xfp, SM_TIME_DEFAULT); - while (sm_io_fgets(e->e_parent->e_xfp, SM_TIME_DEFAULT, buf, - sizeof(buf)) != NULL) + while ((blen = sm_io_fgets(e->e_parent->e_xfp, SM_TIME_DEFAULT, + buf, sizeof(buf))) >= 0) { if (printheader && !putline(" ----- Transcript of session follows -----\n", mci)) goto writeerr; printheader = false; - if (!putline(buf, mci)) + if (!putxline(buf, blen, mci, PXLF_MAPFROM)) goto writeerr; } } @@ -1174,11 +1176,24 @@ errbody(mci, e, separator) /* Original-Recipient: -- passed from on high */ if (q->q_orcpt != NULL) { - (void) sm_snprintf(buf, sizeof(buf), - "Original-Recipient: %.800s", - q->q_orcpt); - if (!putline(buf, mci)) - goto writeerr; + p = strchr(q->q_orcpt, ';'); + + /* + ** p == NULL shouldn't happen due to + ** check in srvrsmtp.c + ** we could log an error in this case. + */ + + if (p != NULL) + { + *p = '\0'; + (void) sm_snprintf(buf, sizeof(buf), + "Original-Recipient: %.100s;%.700s", + q->q_orcpt, xuntextify(p + 1)); + *p = ';'; + if (!putline(buf, mci)) + goto writeerr; + } } /* Figure out actual recipient */ @@ -1682,6 +1697,34 @@ xtextok(s) } return true; } + +/* +** ISATOM -- check if a string is an "atom" +** +** Parameters: +** s -- the string to check. +** +** Returns: +** true -- iff s is an atom +*/ + +bool +isatom(s) + const char *s; +{ + int c; + + if (s == NULL || *s == '\0') + return false; + while ((c = *s++) != '\0') + { + if (strchr("()<>@,;:\\.[]\"", c) != NULL) + return false; + if (c < '!' || c > '~') + return false; + } + return true; +} /* ** PRUNEROUTE -- prune an RFC-822 source route ** diff --git a/contrib/sendmail/src/sendmail.h b/contrib/sendmail/src/sendmail.h index e114019a6681..6704fda252a8 100644 --- a/contrib/sendmail/src/sendmail.h +++ b/contrib/sendmail/src/sendmail.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2012 Sendmail, Inc. and its suppliers. + * Copyright (c) 1998-2013 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.1096 2012/11/16 20:25:03 ca Exp $"; +SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.1101 2013/03/15 17:54:12 ca Exp $"; # endif /* ! lint */ #endif /* _DEFINE */ @@ -124,7 +124,11 @@ SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.1096 2012/11/16 20:2 #if STARTTLS # include <openssl/ssl.h> # if !TLS_NO_RSA -# define RSA_KEYLENGTH 512 +# if _FFR_FIPSMODE +# define RSA_KEYLENGTH 1024 +# else /* _FFR_FIPSMODE */ +# define RSA_KEYLENGTH 512 +# endif /* _FFR_FIPSMODE */ # endif /* !TLS_NO_RSA */ #endif /* STARTTLS */ @@ -1941,14 +1945,14 @@ struct termescape #define TLS_AUTH_FAIL (-1) /* functions */ -extern bool init_tls_library __P((void)); +extern bool init_tls_library __P((bool _fipsmode)); extern bool inittls __P((SSL_CTX **, unsigned long, long, bool, char *, char *, char *, char *, char *)); extern bool initclttls __P((bool)); extern void setclttls __P((bool)); extern bool initsrvtls __P((bool)); extern int tls_get_info __P((SSL *, bool, char *, MACROS_T *, bool)); extern int endtls __P((SSL *, char *)); -extern void tlslogerr __P((const char *)); +extern void tlslogerr __P((int, const char *)); EXTERN char *CACertPath; /* path to CA certificates (dir. with hashes) */ @@ -2296,6 +2300,7 @@ EXTERN bool DontLockReadFiles; /* don't read lock support files */ EXTERN bool DontPruneRoutes; /* don't prune source routes */ EXTERN bool ForkQueueRuns; /* fork for each job when running the queue */ EXTERN bool FromFlag; /* if set, "From" person is explicit */ +EXTERN bool FipsMode; EXTERN bool GrabTo; /* if set, get recipients from msg */ EXTERN bool EightBitAddrOK; /* we'll let 8-bit addresses through */ EXTERN bool HasEightBits; /* has at least one eight bit input byte */ @@ -2310,6 +2315,9 @@ EXTERN bool NoAlias; /* suppress aliasing */ EXTERN bool NoConnect; /* don't connect to non-local mailers */ EXTERN bool OnlyOneError; /* .... or only want to give one SMTP reply */ EXTERN bool QuickAbort; /* .... but only if we want a quick abort */ +#if _FFR_REJECT_NUL_BYTE +EXTERN bool RejectNUL; /* reject NUL input byte? */ +#endif /* _FFR_REJECT_NUL_BYTE */ #if REQUIRES_DIR_FSYNC EXTERN bool RequiresDirfsync; /* requires fsync() for directory */ #endif /* REQUIRES_DIR_FSYNC */ @@ -2655,6 +2663,7 @@ extern void initmacros __P((ENVELOPE *)); extern void initsetproctitle __P((int, char **, char **)); extern void init_vendor_macros __P((ENVELOPE *)); extern SIGFUNC_DECL intsig __P((int)); +extern bool isatom __P((const char *)); extern bool isloopback __P((SOCKADDR sa)); extern void load_if_names __P((void)); extern bool lockfile __P((int, char *, char *, int)); diff --git a/contrib/sendmail/src/sfsasl.c b/contrib/sendmail/src/sfsasl.c index cad16db1686a..ebea3f2c0222 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.118 2008/07/22 15:12:48 ca Exp $") +SM_RCSID("@(#)$Id: sfsasl.c,v 8.120 2013/03/15 17:49:12 guenther Exp $") #include <stdlib.h> #include <sendmail.h> #include <sm/time.h> @@ -628,13 +628,14 @@ tls_retry(ssl, rfd, wfd, tlsstart, timeout, err, where) "STARTTLS=%s, error: fd %d/%d too large", where, rfd, wfd); if (LogLevel > 8) - tlslogerr(where); + tlslogerr(LOG_WARNING, where); } errno = EINVAL; } else if (err == SSL_ERROR_WANT_READ) { fd_set ssl_maskr, ssl_maskx; + int save_errno = errno; FD_ZERO(&ssl_maskr); FD_SET(rfd, &ssl_maskr); @@ -647,10 +648,12 @@ tls_retry(ssl, rfd, wfd, tlsstart, timeout, err, where) } while (ret < 0 && errno == EINTR); if (ret < 0 && errno > 0) ret = -errno; + errno = save_errno; } else if (err == SSL_ERROR_WANT_WRITE) { fd_set ssl_maskw, ssl_maskx; + int save_errno = errno; FD_ZERO(&ssl_maskw); FD_SET(wfd, &ssl_maskw); @@ -663,6 +666,7 @@ tls_retry(ssl, rfd, wfd, tlsstart, timeout, err, where) } while (ret < 0 && errno == EINTR); if (ret < 0 && errno > 0) ret = -errno; + errno = save_errno; } return ret; } @@ -770,8 +774,17 @@ tls_read(fp, buf, size) break; #endif /* DEAL_WITH_ERROR_SSL */ err = "generic SSL error"; + if (LogLevel > 9) - tlslogerr("read"); + { + int pri; + + if (errno == EAGAIN && try > 0) + pri = LOG_DEBUG; + else + pri = LOG_WARNING; + tlslogerr(pri, "read"); + } #if DEAL_WITH_ERROR_SSL /* avoid repeated calls? */ @@ -792,11 +805,19 @@ tls_read(fp, buf, size) "STARTTLS: read error=timeout"); } else if (LogLevel > 8) - sm_syslog(LOG_WARNING, NOQID, + { + int pri; + + if (save_errno == EAGAIN && try > 0) + pri = LOG_DEBUG; + else + pri = LOG_WARNING; + sm_syslog(pri, NOQID, "STARTTLS: read error=%s (%d), errno=%d, get_error=%s, retry=%d, ssl_err=%d", err, r, errno, ERR_error_string(ERR_get_error(), NULL), try, ssl_err); + } else if (LogLevel > 7) sm_syslog(LOG_WARNING, NOQID, "STARTTLS: read error=%s (%d), retry=%d, ssl_err=%d", @@ -878,7 +899,7 @@ tls_write(fp, buf, size) ERR_GET_REASON(ERR_peek_error())); */ if (LogLevel > 9) - tlslogerr("write"); + tlslogerr(LOG_WARNING, "write"); #if DEAL_WITH_ERROR_SSL /* avoid repeated calls? */ diff --git a/contrib/sendmail/src/srvrsmtp.c b/contrib/sendmail/src/srvrsmtp.c index c4c045bb0487..0dfdf6b09365 100644 --- a/contrib/sendmail/src/srvrsmtp.c +++ b/contrib/sendmail/src/srvrsmtp.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2010, 2012 Sendmail, Inc. and its suppliers. + * Copyright (c) 1998-2010, 2012, 2013 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.1011 2012/12/19 02:49:21 ca Exp $") +SM_RCSID("@(#)$Id: srvrsmtp.c,v 8.1015 2013/03/12 15:24:54 ca Exp $") #include <sm/time.h> #include <sm/fdset.h> @@ -1864,7 +1864,7 @@ smtp(nullserver, d_flags, e) { message("454 4.3.3 TLS not available: error generating SSL handle"); if (LogLevel > 8) - tlslogerr("server"); + tlslogerr(LOG_WARNING, "server"); goto tls_done; } @@ -1927,7 +1927,7 @@ smtp(nullserver, d_flags, e) ssl_err, errno, i, CurSmtpClient); if (LogLevel > 9) - tlslogerr("server"); + tlslogerr(LOG_WARNING, "server"); } tls_ok_srv = false; SSL_free(srv_ssl); @@ -4518,6 +4518,8 @@ rcpt_esmtp_args(a, kp, vp, e) } else if (sm_strcasecmp(kp, "orcpt") == 0) { + char *p; + if (!bitset(SRV_OFFER_DSN, e->e_features)) { usrerr("504 5.7.0 Sorry, ORCPT not supported, we do not allow DSN"); @@ -4528,16 +4530,25 @@ rcpt_esmtp_args(a, kp, vp, e) usrerr("501 5.5.2 ORCPT requires a value"); /* NOTREACHED */ } - if (strchr(vp, ';') == NULL || !xtextok(vp)) + if (a->q_orcpt != NULL) + { + usrerr("501 5.5.0 Duplicate ORCPT parameter"); + /* NOTREACHED */ + } + p = strchr(vp, ';'); + if (p == NULL) { usrerr("501 5.5.4 Syntax error in ORCPT parameter value"); /* NOTREACHED */ } - if (a->q_orcpt != NULL) + *p = '\0'; + if (!isatom(vp) || !xtextok(p + 1)) { - usrerr("501 5.5.0 Duplicate ORCPT parameter"); + *p = ';'; + usrerr("501 5.5.4 Syntax error in ORCPT parameter value"); /* NOTREACHED */ } + *p = ';'; a->q_orcpt = sm_rpool_strdup_x(e->e_rpool, vp); } else @@ -4923,7 +4934,7 @@ help(topic, e) len = strlen(topic); - while (sm_io_fgets(hf, SM_TIME_DEFAULT, buf, sizeof(buf)) != NULL) + while (sm_io_fgets(hf, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) { if (buf[0] == '#') { diff --git a/contrib/sendmail/src/tls.c b/contrib/sendmail/src/tls.c index a57a05d3612d..60d408e5e796 100644 --- a/contrib/sendmail/src/tls.c +++ b/contrib/sendmail/src/tls.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2006, 2008, 2009, 2011 Sendmail, Inc. and its suppliers. + * Copyright (c) 2000-2006, 2008, 2009, 2011, 2013 Sendmail, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set @@ -10,7 +10,7 @@ #include <sendmail.h> -SM_RCSID("@(#)$Id: tls.c,v 8.118 2011/03/07 23:20:47 ca Exp $") +SM_RCSID("@(#)$Id: tls.c,v 8.121 2013/01/02 23:54:17 ca Exp $") #if STARTTLS # include <openssl/err.h> @@ -267,15 +267,18 @@ tls_rand_init(randfile, logl) ** INIT_TLS_LIBRARY -- Calls functions which setup TLS library for global use. ** ** Parameters: -** none. +** fipsmode -- use FIPS? ** ** Returns: ** succeeded? */ bool -init_tls_library() +init_tls_library(fipsmode) + bool fipsmode; { + bool bv; + /* basic TLS initialization, ignore result for now */ SSL_library_init(); SSL_load_error_strings(); @@ -284,7 +287,30 @@ init_tls_library() SSLeay_add_ssl_algorithms(); # endif /* 0 */ - return tls_rand_init(RandFile, 7); + bv = tls_rand_init(RandFile, 7); +# if _FFR_FIPSMODE + if (bv && fipsmode) + { + if (!FIPS_mode_set(1)) + { + unsigned long err; + + err = ERR_get_error(); + if (LogLevel > 0) + sm_syslog(LOG_ERR, NOQID, + "STARTTLS=init, FIPSMode=%s", + ERR_error_string(err, NULL)); + return false; + } + else + { + if (LogLevel > 9) + sm_syslog(LOG_INFO, NOQID, + "STARTTLS=init, FIPSMode=ok"); + } + } +#endif /* _FFR_FIPSMODE */ + return bv; } /* ** TLS_SET_VERIFY -- request client certificate? @@ -709,7 +735,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: SSL_CTX_new(SSLv23_%s_method()) failed", who, who); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); return false; } @@ -808,7 +834,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: RSA_generate_key failed", who); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); } return false; } @@ -829,7 +855,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: SSL_CTX_use_PrivateKey_file(%s) failed", who, keyfile); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); } if (bitset(TLS_I_USE_KEY, req)) return false; @@ -846,7 +872,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: SSL_CTX_use_certificate_file(%s) failed", who, certfile); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); } if (bitset(TLS_I_USE_CERT, req)) return false; @@ -863,7 +889,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: SSL_CTX_check_private_key failed(%s): %d", who, keyfile, r); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); } if (bitset(TLS_I_USE_KEY, req)) return false; @@ -882,7 +908,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: SSL_CTX_use_PrivateKey_file(%s) failed", who, kf2); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); } } @@ -896,7 +922,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: SSL_CTX_use_certificate_file(%s) failed", who, cf2); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); } } @@ -911,7 +937,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: SSL_CTX_check_private_key 2 failed: %d", who, r); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); } } # endif /* _FFR_TLS_1 */ @@ -962,7 +988,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar who, dhparam, ERR_error_string(err, NULL)); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); } } else @@ -973,7 +999,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: BIO_new_file(%s) failed", who, dhparam); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); } } } @@ -1089,7 +1115,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar "STARTTLS=%s, error: load verify locs %s, %s failed: %d", who, cacertpath, cacertfile, r); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); } if (bitset(TLS_I_VRFY_LOC, req)) return false; @@ -1113,7 +1139,7 @@ inittls(ctx, req, options, srv, certfile, keyfile, cacertpath, cacertfile, dhpar who, CipherList); if (LogLevel > 9) - tlslogerr(who); + tlslogerr(LOG_WARNING, who); } /* failure if setting to this list is required? */ } @@ -1377,7 +1403,7 @@ endtls(ssl, side) sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, SSL_shutdown failed: %d", side, r); - tlslogerr(side); + tlslogerr(LOG_WARNING, side); } ret = EX_SOFTWARE; } @@ -1426,7 +1452,7 @@ endtls(ssl, side) sm_syslog(LOG_WARNING, NOQID, "STARTTLS=%s, SSL_shutdown not done", side); - tlslogerr(side); + tlslogerr(LOG_WARNING, side); } ret = EX_SOFTWARE; } @@ -1659,6 +1685,7 @@ tls_verify_cb(ctx, unused) ** TLSLOGERR -- log the errors from the TLS error stack ** ** Parameters: +** level -- syslog level ** who -- server/client (for logging). ** ** Returns: @@ -1666,7 +1693,8 @@ tls_verify_cb(ctx, unused) */ void -tlslogerr(who) +tlslogerr(level, who) + int level; const char *who; { unsigned long l; @@ -1680,7 +1708,7 @@ tlslogerr(who) while ((l = ERR_get_error_line_data(CP &file, &line, CP &data, &flags)) != 0) { - sm_syslog(LOG_WARNING, NOQID, + sm_syslog(level, NOQID, "STARTTLS=%s: %lu:%s:%s:%d:%s", who, es, ERR_error_string(l, buf), file, line, diff --git a/contrib/sendmail/src/usersmtp.c b/contrib/sendmail/src/usersmtp.c index c5da51257a97..6dafca0048da 100644 --- a/contrib/sendmail/src/usersmtp.c +++ b/contrib/sendmail/src/usersmtp.c @@ -13,7 +13,7 @@ #include <sendmail.h> -SM_RCSID("@(#)$Id: usersmtp.c,v 8.485 2010/07/23 21:09:38 ca Exp $") +SM_RCSID("@(#)$Id: usersmtp.c,v 8.486 2013/03/12 15:24:54 ca Exp $") #include <sysexits.h> @@ -801,7 +801,7 @@ readauth(filename, safe, sai, rpool) lc = 0; while (lc <= SASL_MECHLIST && - sm_io_fgets(f, SM_TIME_DEFAULT, buf, sizeof(buf)) != NULL) + sm_io_fgets(f, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0) { if (buf[0] != '#') { diff --git a/contrib/sendmail/src/util.c b/contrib/sendmail/src/util.c index 9bc28ec8ac45..8ea26200c150 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.425 2012/03/03 00:10:43 ca Exp $") +SM_RCSID("@(#)$Id: util.c,v 8.426 2013/03/12 15:24:54 ca Exp $") #include <sm/sendmail.h> #include <sysexits.h> @@ -1285,8 +1285,7 @@ sfgets(buf, siz, fp, timeout, during) char *during; { register char *p; - int save_errno; - int io_timeout; + int save_errno, io_timeout, l; SM_REQUIRE(siz > 0); SM_REQUIRE(buf != NULL); @@ -1299,7 +1298,7 @@ sfgets(buf, siz, fp, timeout, during) } /* try to read */ - p = NULL; + l = -1; errno = 0; /* convert the timeout to sm_io notation */ @@ -1307,8 +1306,8 @@ sfgets(buf, siz, fp, timeout, during) while (!sm_io_eof(fp) && !sm_io_error(fp)) { errno = 0; - p = sm_io_fgets(fp, io_timeout, buf, siz); - if (p == NULL && errno == EAGAIN) + l = sm_io_fgets(fp, io_timeout, buf, siz); + if (l < 0 && errno == EAGAIN) { /* The sm_io_fgets() call timedout */ if (LogLevel > 1) @@ -1328,7 +1327,7 @@ sfgets(buf, siz, fp, timeout, during) errno = ETIMEDOUT; return NULL; } - if (p != NULL || errno != EINTR) + if (l >= 0 || errno != EINTR) break; (void) sm_io_clearerr(fp); } @@ -1336,7 +1335,7 @@ sfgets(buf, siz, fp, timeout, during) /* clean up the books and exit */ LineNumber++; - if (p == NULL) + if (l < 0) { buf[0] = '\0'; if (TrafficLogFile != NULL) diff --git a/contrib/sendmail/src/version.c b/contrib/sendmail/src/version.c index 2e9fe48ec804..05ad66ac973e 100644 --- a/contrib/sendmail/src/version.c +++ b/contrib/sendmail/src/version.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2012 Sendmail, Inc. and its suppliers. + * Copyright (c) 1998-2013 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.235 2012/12/19 05:11:44 ca Exp $") +SM_RCSID("@(#)$Id: version.c,v 8.243 2013/04/18 15:07:17 ca Exp $") -char Version[] = "8.14.6"; +char Version[] = "8.14.7"; diff --git a/contrib/sendmail/test/Makefile.m4 b/contrib/sendmail/test/Makefile.m4 index 1d38d6252ccb..1149d876bcb6 100644 --- a/contrib/sendmail/test/Makefile.m4 +++ b/contrib/sendmail/test/Makefile.m4 @@ -1,4 +1,4 @@ -dnl $Id: Makefile.m4,v 1.4 2002/06/21 22:01:54 ca Exp $ +dnl $Id: Makefile.m4,v 1.6 2013/04/01 21:04:29 ca Exp $ include(confBUILDTOOLSDIR`/M4/switch.m4') bldPRODUCT_START(`executable', `test') diff --git a/contrib/sendmail/vacation/vacation.c b/contrib/sendmail/vacation/vacation.c index 2ead0b86cbee..4cc106e3089f 100644 --- a/contrib/sendmail/vacation/vacation.c +++ b/contrib/sendmail/vacation/vacation.c @@ -20,7 +20,7 @@ SM_IDSTR(copyright, The Regents of the University of California. All rights reserved.\n\ Copyright (c) 1983 Eric P. Allman. All rights reserved.\n") -SM_IDSTR(id, "@(#)$Id: vacation.c,v 8.146 2009/08/07 21:28:39 ca Exp $") +SM_IDSTR(id, "@(#)$Id: vacation.c,v 8.147 2013/03/12 15:24:56 ca Exp $") #include <ctype.h> @@ -509,7 +509,7 @@ readheaders(alwaysrespond) cont = false; tome = alwaysrespond; - while (sm_io_fgets(smioin, SM_TIME_DEFAULT, buf, sizeof(buf)) && + while (sm_io_fgets(smioin, SM_TIME_DEFAULT, buf, sizeof(buf)) >= 0 && *buf != '\n') { switch(*buf) @@ -954,7 +954,7 @@ xclude(f) if (f == NULL) return; - while (sm_io_fgets(f, SM_TIME_DEFAULT, buf, sizeof buf)) + while (sm_io_fgets(f, SM_TIME_DEFAULT, buf, sizeof buf) >= 0) { if ((p = strchr(buf, '\n')) != NULL) *p = '\0'; @@ -1049,7 +1049,7 @@ sendmessage(myname, msgfn, sender) (void) sm_io_fprintf(sfp, SM_TIME_DEFAULT, "To: %s\n", From); (void) sm_io_fprintf(sfp, SM_TIME_DEFAULT, "Auto-Submitted: auto-replied\n"); - while (sm_io_fgets(mfp, SM_TIME_DEFAULT, buf, sizeof buf)) + while (sm_io_fgets(mfp, SM_TIME_DEFAULT, buf, sizeof buf) >= 0) (void) sm_io_fputs(sfp, SM_TIME_DEFAULT, buf); (void) sm_io_close(mfp, SM_TIME_DEFAULT); (void) sm_io_close(sfp, SM_TIME_DEFAULT); |