Apply by doing:
cd /usr/src
patch -p0 < 014_sendmail.patch
And then rebuild and install sendmail:
cd gnu/usr.sbin/sendmail
make depend
make
make install
Restart sendmail if necessary:
kill -HUP `sed q /var/run/sendmail.pid`
Index: gnu/usr.sbin/sendmail/cf/README
===================================================================
RCS file: /cvs/src/gnu/usr.sbin/sendmail/cf/README,v
retrieving revision 1.15
retrieving revision 1.15.2.1
diff -u -r1.15 -r1.15.2.1
--- gnu/usr.sbin/sendmail/cf/README 15 Sep 2002 02:23:35 -0000 1.15
+++ gnu/usr.sbin/sendmail/cf/README 31 Mar 2003 01:01:46 -0000 1.15.2.1
@@ -3630,6 +3630,7 @@
confMAX_MIME_HEADER_LENGTH MaxMimeHeaderLength
[undefined] Maximum length of
certain MIME header field values.
+ If not set, sendmail uses 2048/1024.
confCONNECTION_RATE_THROTTLE ConnectionRateThrottle
[undefined] The maximum number of
connections permitted per second per
@@ -4311,4 +4312,4 @@
8 DNS based blacklists
9 special local rulesets (1 and 2)
-$Revision: 1.15 $, Last updated $Date: 2002/09/15 02:23:35 $
+$Revision: 1.15.2.1 $, Last updated $Date: 2003/03/31 01:01:46 $
Index: gnu/usr.sbin/sendmail/sendmail/README
===================================================================
RCS file: /cvs/src/gnu/usr.sbin/sendmail/sendmail/README,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -u -r1.14 -r1.14.2.1
--- gnu/usr.sbin/sendmail/sendmail/README 26 Jun 2002 04:48:55 -0000 1.14
+++ gnu/usr.sbin/sendmail/sendmail/README 31 Mar 2003 01:01:47 -0000 1.14.2.1
@@ -475,6 +475,9 @@
parameter of main().
USE_DOUBLE_FORK By default this is on (1). Set it to 0 to suppress the
extra fork() used to avoid intermediate zombies.
+ALLOW_255 Do not convert (char)0xff to (char)0x7f in headers etc.
+ This can also be done at runtime with the command line
+ option -d82.101.
+-----------------------+
@@ -1768,4 +1771,4 @@
version.c The version number and information about this
version of sendmail.
-#define NOCHAR -1 /* signal nothing in lookahead token */
+#define NOCHAR (-1) /* signal nothing in lookahead token */
char **
prescan(addr, delim, pvpbuf, pvpbsize, delimptr, toktab)
@@ -694,6 +694,7 @@
/* see if there is room */
if (q >= &pvpbuf[pvpbsize - 5])
{
+ addrtoolong:
usrerr("553 5.1.1 Address too long");
if (strlen(addr) > MAXNAME)
addr[MAXNAME] = '\0';
@@ -705,11 +706,15 @@
}
/* squirrel it away */
+#if !ALLOW_255
+ if ((char) c == (char) -1 && !tTd(82, 101))
+ c &= 0x7f;
+#endif /* !ALLOW_255 */
*q++ = c;
}
/* read a new input character */
- c = *p++;
+ c = (*p++) & 0x00ff;
if (c == '\0')
{
/* diagnose and patch up bad syntax */
@@ -764,6 +769,9 @@
}
else if (c != '!' || state == QST)
{
+ /* see if there is room */
+ if (q >= &pvpbuf[pvpbsize - 5])
+ goto addrtoolong;
*q++ = '\\';
continue;
}
@@ -849,6 +857,9 @@
/* new token */
if (tok != q)
{
+ /* see if there is room */
+ if (q >= &pvpbuf[pvpbsize - 5])
+ goto addrtoolong;
*q++ = '\0';
if (tTd(22, 36))
{