Apply by doing:
cd /usr/src
patch -p0 < 027_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.11
retrieving revision 1.11.2.1
diff -u -r1.11 -r1.11.2.1
--- gnu/usr.sbin/sendmail/cf/README 14 Jan 2002 03:21:39 -0000 1.11
+++ gnu/usr.sbin/sendmail/cf/README 31 Mar 2003 07:07:04 -0000 1.11.2.1
@@ -3572,6 +3572,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
@@ -4237,4 +4238,4 @@
8 DNS based blacklists
9 special local rulesets (1 and 2)
-$Revision: 1.11 $, Last updated $Date: 2002/01/14 03:21:39 $
+$Revision: 1.11.2.1 $, Last updated $Date: 2003/03/31 07:07:04 $
Index: gnu/usr.sbin/sendmail/sendmail/README
===================================================================
RCS file: /cvs/src/gnu/usr.sbin/sendmail/sendmail/README,v
retrieving revision 1.11
retrieving revision 1.11.2.1
diff -u -r1.11 -r1.11.2.1
--- gnu/usr.sbin/sendmail/sendmail/README 14 Jan 2002 03:21:40 -0000 1.11
+++ gnu/usr.sbin/sendmail/sendmail/README 31 Mar 2003 07:07:06 -0000 1.11.2.1
@@ -476,6 +476,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.
+-----------------------+
@@ -1735,4 +1738,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)
@@ -660,6 +660,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';
@@ -671,11 +672,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 */
@@ -730,6 +735,9 @@
}
else if (c != '!' || state == QST)
{
+ /* see if there is room */
+ if (q >= &pvpbuf[pvpbsize - 5])
+ goto addrtoolong;
*q++ = '\\';
continue;
}
@@ -815,6 +823,9 @@
/* new token */
if (tok != q)
{
+ /* see if there is room */
+ if (q >= &pvpbuf[pvpbsize - 5])
+ goto addrtoolong;
*q++ = '\0';
if (tTd(22, 36))
{