Date: Fri, 31 Mar 2000 01:02:53 -0500 (EST) From: Cyrus Rahman <cr@jcmax.com> To: FreeBSD-gnats-submit@freebsd.org Subject: bin/17704: at(1) is not y2k compliant Message-ID: <200003310602.BAA48184@plasma.jcmax.com>
next in thread | raw e-mail | index | archive | help
>Number: 17704
>Category: bin
>Synopsis: at(1) is not y2k compliant
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Mar 30 22:10:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator: Cyrus Rahman
>Release: FreeBSD 4.0-STABLE i386
>Organization:
>Environment:
>Description:
At(1) uses the following code in assign_date() to convert three possible year
formats to the format used by a tm structure:
if (year > 99) {
if (year > 1899)
year -= 1900;
else
panic("garbled time");
}
If year contains:
the last two digits of the current year,
or the actual value of the year,
all is well. However, if year contains:
the tm_year value of a year after the year 1999 (e.g. 100)
the code calls panic().
>How-To-Repeat:
Try using dates specifying a weekday, for which the parser passes a tm_year
to assign_date():
sh> at 01:15 Sunday
at: garbled time
>Fix:
Instead of passing three different year formats into assign_date() and hoping
it figures out what to do with them, convert the year to the actual value
first in the one place where this is not done:
*** parsetime.c.old Thu Mar 30 22:29:14 2000
--- parsetime.c Thu Mar 30 22:24:19 2000
***************
*** 495,501 ****
tm->tm_wday = wday;
! assign_date(tm, mday, tm->tm_mon, tm->tm_year);
break;
case NUMBER:
--- 495,501 ----
tm->tm_wday = wday;
! assign_date(tm, mday, tm->tm_mon, tm->tm_year + 1900);
break;
case NUMBER:
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200003310602.BAA48184>
