1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-10-19 02:29:40 +00:00

Merge sendmail 8.14.7 to HEAD

MFC after:	4 days
This commit is contained in:
Gregory Neil Shapiro 2013-04-21 17:08:44 +00:00
commit 552d4955b8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=249729
44 changed files with 801 additions and 277 deletions

View File

@ -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-----

View File

@ -141,6 +141,143 @@ gpExpdV7qPrw9k01j5rod5PjZlG8zV0=
=SR28
-----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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
x4XQOkQ96TXgQoe/dvARKuUcAQl7RvZOIZcBTPs=
=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
@ -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 $

View File

@ -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

View File

@ -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
###############

View File

@ -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')

View File

@ -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);

View File

@ -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

View File

@ -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 */
/*

View File

@ -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)

View File

@ -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

View File

@ -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 */

View File

@ -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')

View File

@ -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)

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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));

View File

@ -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')

View File

@ -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++;

View File

@ -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 @@ collect(fp, smtpmode, hdrp, e, rsetsize)
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);

View File

@ -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",

View File

@ -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);

View File

@ -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 @@ starttls(m, mci, e)
result, sr == NULL ? "unknown" : sr, ssl_err,
errno, i);
if (LogLevel > 9)
tlslogerr("client");
tlslogerr(LOG_WARNING, "client");
}
SSL_free(clt_ssl);

View File

@ -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))

View File

@ -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");

View File

@ -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');

View File

@ -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)

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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))
{

View File

@ -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 @@ include(fname, forwarding, ctladdr, sendq, aliaslevel, e)
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);

View File

@ -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
**

View File

@ -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));

View File

@ -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? */

View File

@ -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))
{
usrerr("501 5.5.4 Syntax error in ORCPT parameter value");
/* NOTREACHED */
}
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 */
}
*p = '\0';
if (!isatom(vp) || !xtextok(p + 1))
{
*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] == '#')
{

View File

@ -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,

View File

@ -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] != '#')
{

View File

@ -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)

View File

@ -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";

View File

@ -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')

View File

@ -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);