Return to BSD News archive
Xref: sserve comp.mail.sendmail:7348 comp.os.386bsd.bugs:521
Path: sserve!newshost.anu.edu.au!munnari.oz.au!ariel.ucs.unimelb.EDU.AU!werple.apana.org.au!news
From: andrew@werple.apana.org.au (Andrew Herbert)
Newsgroups: comp.mail.sendmail,comp.os.386bsd.bugs
Subject: arpatounix() fix for sendmail 5.67a/IDA-1.5
Date: 20 Apr 1993 16:21:34 +1000
Organization: werple public-access unix, Melbourne
Lines: 58
Message-ID: <1r04pe$7bg@werple.apana.org.au>
NNTP-Posting-Host: werple.apana.org.au
Recently my sendmail was having a really hard time with a message arriving
with a date field "Date: Wed, 14 Apr 1993 16:36:25 +119304028 (CDT)". The
huge timezone offset was resulting in a corrupted state structure in the
ctime(3) library routines (presumably from the call to asctime() made at the
end of arpatounix()). This resulted in a later syslog() call killing
sendmail with a SIGSEGV.
The OS in question: 386bsd - a BSD NetRel2 derivative. I guess if I was
really keen I would track down the problem in the ctime routines. For now,
however, here's a patch for sendmail.
enjoy,
Andrew
--
*** arpadate.c.orig Mon Apr 19 21:38:42 1993
--- arpadate.c Tue Apr 20 15:57:36 1993
***************
*** 404,411 ****
int off;
off = atoi(++p);
! h_offset = off / 100;
! m_offset = off % 100;
}
else if (*p == '-')
{
--- 404,413 ----
int off;
off = atoi(++p);
! if (off > -2400 && off < 2400) {
! h_offset = off / 100;
! m_offset = off % 100;
! }
}
else if (*p == '-')
{
***************
*** 412,419 ****
int off;
off = atoi(++p);
! h_offset = off / -100;
! m_offset = -1 * (off % 100);
}
else
{
--- 414,423 ----
int off;
off = atoi(++p);
! if (off > -2400 && off < 2400) {
! h_offset = off / -100;
! m_offset = -1 * (off % 100);
! }
}
else
{