539aa594a5
PR: 16484 Submitted by: Stephen J. Roznowski <sjr@home.com>
402 lines
16 KiB
Text
402 lines
16 KiB
Text
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
|
|
<!ENTITY date "$FreeBSD: www/en/y2kbug.sgml,v 1.34 1999/12/12 16:24:03 jhb Exp $">
|
|
<!ENTITY title 'Year 2000 Compatibility (aka "Millennium Bug")'>
|
|
<!ENTITY % includes SYSTEM "includes.sgml"> %includes;
|
|
]>
|
|
<!-- $FreeBSD: www/en/y2kbug.sgml,v 1.34 1999/12/12 16:24:03 jhb Exp $ -->
|
|
|
|
<html>
|
|
&header;
|
|
|
|
<p>As management understanding of the Year 2000 problem (aka, "The
|
|
Millennium Bug") increases, more and more companies are demanding
|
|
official statements from the vendors of their hardware and software as
|
|
to how their product will handle the year 2000 date rollover.</p>
|
|
|
|
<p>Organizations that use unix and unix like operating systems such as
|
|
FreeBSD are already one step ahead of the problem. FreeBSD will
|
|
properly maintain time long after year 2000 passes.</p>
|
|
|
|
<h2>Background information</h2>
|
|
|
|
<p><i>(This section based on the text from the <a
|
|
href="http://www.linux.org.uk/mbug.html">Linux Y2K compliance
|
|
page</a>)</i></p>
|
|
|
|
<p>As with all Unix and Unixlike operating systems, time and dates in
|
|
FreeBSD are represented internally as the number of seconds since the
|
|
1st of January 1970 (the Unix "epoch"). Currently, that figure is
|
|
stored as a 32 bit integer, and will run out part way through 2038. By
|
|
then we should (hopefully) be using a counter of 64 bits (or greater)
|
|
which should be good until the end of the universe.</p>
|
|
|
|
<p>Note that the OS being Y2K compliant will not fix errant applications
|
|
that are not Y2K compliant.</p>
|
|
|
|
<p>Note also that the OS expects to read the current date and time from
|
|
the CMOS clock of your computer. Not all of these devices correctly
|
|
handle the year 2000. You are advised to test each platform
|
|
individually to ensure that your hardware clock behaves correctly when
|
|
going from 1999 to 2000, and that it correctly interprets the year 2000
|
|
as a leap year.</p>
|
|
|
|
<h2>What you can do</h2>
|
|
|
|
<p>FreeBSD will continue to properly maintain time well into the next
|
|
century. Third party applications, however, might not. Your best
|
|
defense against year 2000 issues is a good offense. Listening to
|
|
stories claiming the coming meltdown of the world as we know it are
|
|
<strong>not</strong> the way to solve the millennium bug. Nor is
|
|
waiting until the last minute. The FreeBSD Project recommends that your
|
|
organization apply sound system administration principles as the
|
|
millennium approaches.</p>
|
|
|
|
<p>There are tests that you can perform to see how your system will
|
|
respond. Set your clock to a few minutes before midnight on New Year's
|
|
Eve and watch the system time. Your system should display the year as
|
|
2000 and not 1900. If the year is displayed incorrectly, then you will
|
|
have plenty of time to update your hardware. Operating your
|
|
organizations information systems under their normal daily load with the
|
|
clock set forward can provide valuable insight into your vulnerablility
|
|
to year 2000 issues.</p>
|
|
|
|
<blockquote>
|
|
<strong>Important:</strong> Do <strong>not</strong> do this on a live
|
|
production system. You may confuse any applications you have which rely
|
|
on dates (billing systems, backup regimes, and so on). Always conduct
|
|
tests like this on development systems which can not affect any live
|
|
data you may have.
|
|
</blockquote>
|
|
|
|
<h2>FreeBSD Year 2000 Statement</h2>
|
|
|
|
<blockquote>
|
|
<p>"After extensive analysis and testing, we believe that FreeBSD is
|
|
100% Y2K compliant. In the unlikely event that something has been
|
|
overlooked, we will do our best to fix it as soon as possible."</p>
|
|
|
|
<p align="right">David Greenman<br>Principal Architect, The FreeBSD
|
|
project</p>
|
|
</blockquote>
|
|
|
|
<h2>Fixed problems</h2>
|
|
|
|
<p>The following Y2K problems have been identified and fixed in
|
|
FreeBSD.</p>
|
|
|
|
<dl>
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=1380">misc/1380</a></dt>
|
|
|
|
<dd>Several programs have a hardcoded 19%d in responses for the year.
|
|
Affected programs include: yacc, ftpd, and make. [Fixed: yacc v1.2
|
|
1999/01/18; ftpd v1.7 1996/08/05; make v1.4 1996/10/06; fixes in
|
|
FreeBSD-2.2 and above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=1382">conf/1382</a></dt>
|
|
|
|
<dd>The sed script in /etc/rc.local that builds the host/kernel ID line
|
|
for the message of the day relies on the year not going past 1999.
|
|
[Fixed v1.21 1996/10/24; fixes in FreeBSD-2.2 and above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=3465">misc/3465</a></dt>
|
|
|
|
<dd>The etc/namedb/make-localhost command generates the DNS serial
|
|
number as YYMMDD. In the year 2000, this will be generated as
|
|
1YYMMDD. [Fixed v1.2 1997/08/11; fixes in FreeBSD-2.2.5 and
|
|
above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=4930">gnu/4930</a> and
|
|
<a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=8321">gnu/8321</a></dt>
|
|
|
|
<dd>groff tmac macros have hardcoded 19 for generating some dates.
|
|
[Fixed: tmac.e v1.3 1998/12/06; doc-common v1.10 1999/01/19; fixes in
|
|
FreeBSD-3.1 and above]</dd>
|
|
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9323">bin/9323</a></dt>
|
|
|
|
<dd>In its obsolescent form, touch doesn't treat the two digit year
|
|
year specification correctly. Years in the range 00-68 are treated
|
|
as 1900-1968 instead of 2000-2068. [Fixed v1.7 1999/01/05; fixes in
|
|
FreeBSD-3.1 and above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/usr.sbin/xntpd/parse/util/dcfd.c">xntpd/parse/util/dcfd.c</a></dt>
|
|
|
|
<dd>The leap year calculations for the number of days in a year, and the
|
|
conversion of DCF77 time to seconds since the Epoch were wrong. These
|
|
errors affected all years. [Fixed v1.6 1999/01/12; fixes in
|
|
FreeBSD-3.1 and above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/gnu/usr.bin/tar/getdate.y">tar/getdate.y</a></dt>
|
|
|
|
<dd>Function Convert() was hard-coded for two digit years in range 70-99.
|
|
Now adjusted to allow two digit years for 1970-2069. The function
|
|
does not allow for century non-leap years - y2k1 alert! [Fixed v1.4
|
|
1999/01/12; fixes in FreeBSD-3.1 and above]
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/usr.bin/fetch/http.c">fetch/http.c</a></dt>
|
|
|
|
<dd>The HTTP protocol includes an obsolete date format which uses a
|
|
two-digit year. Previous versions of fetch would interpret all such
|
|
dates in the 1900s; subsequent to this revision, the pivot described
|
|
in <a href="ftp://ftp.cdrom.com/pub/internet/rfc/rfc2068.txt">RFC
|
|
2068</a> is employed, which causes two-digit years to be interpreted
|
|
as always belonging to the current century unless they would be 50 or
|
|
more years in the future. Since the HTTP servers which use this
|
|
obsolete format are no longer widespread, this is not expected to have
|
|
a significant impact. [Fixed v1.24 1999/01/15; fixes in FreeBSD-3.1
|
|
and above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9500">misc/9500</a></dt>
|
|
|
|
<dd>The `edithook' script in the CVSROOT directory uses a raw tm_year
|
|
and will therefore display 01/01/100 for 2000-JAN-01. [Fixed v1.2
|
|
1999/01/17; not relevant to FreeBSD releases]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9501">bin/9501</a></dt>
|
|
|
|
<dd>Several cvs contrib files are not Y2K compliant. The log.pl and
|
|
sccs2rcs.csh scripts prepend `19' to the year resulting in a display
|
|
of 19100 for 2000. The log_accum.pl script uses a two digit year in
|
|
one place and in another place assumes that the tm_year is year within
|
|
century rather than years since 1900. [Fixed: log.pl v1.2 1999/01/15;
|
|
sccs2rcs.csh v1.3 1999/01/15; fixes in FreeBSD-3.1 and above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9502">bin/9502</a></dt>
|
|
<dd>The groff number register `yr' is assigned from a (struct
|
|
tm).tm_year and therefore represents the number of years since 1900,
|
|
not the year within the century (see definition in troff/input.cc).
|
|
[Fixed, now set mod 100, troff/input.cc V1.2 1999/06/03; fixed
|
|
in FreeBSD-3.3]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9503">bin/9503</a></dt>
|
|
|
|
<dd>PicoBSD's simple_httpd uses a raw tm_year and will therefore display
|
|
01/01/100 for 2000-JAN-01. [Fixed v1.2 1999/01/16; fixes in
|
|
FreeBSD-3.1 and above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9505">bin/9505</a></dt>
|
|
|
|
<dd>Adduser uses a raw tm_year and will therefore display 100/01/01 for
|
|
2000-JAN-01. [Fixed v1.42 1999/01/15; fixes in FreeBSD-3.1 and
|
|
above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9506">bin/9506</a></dt>
|
|
|
|
<dd>Cron uses a raw tm_year and will therefore display 100 for 2000.
|
|
[Fixed v1.7 1999/01/16; fixes in FreeBSD-3.1 and above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9507">bin/9507</a></dt>
|
|
|
|
<dd>tcpslice(8) uses a raw tm_year and will therefore display
|
|
100y01m01d... for 2000-JAN-01. For compatibility, use a two-digit
|
|
year until 2000.[Fixed v1.8 1999/01/20; fixes in FreeBSD-3.1 and
|
|
above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=14472">bin/14472</a></dt>
|
|
|
|
<dd>Date command does not take thousand/hundred digits. [Fixed v1.31 1999/11/10]
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=14511">misc/14511</a></dt>
|
|
|
|
<dd>Chpass has a problem using 00 for expiration year.
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15852">bin/15852</a> and
|
|
<a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16045">gnu/16045</a> and
|
|
<a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16207">bin/16207</a>
|
|
</dt>
|
|
|
|
<dd>Groff predefined \*(DT [\*(td] string has Y2K bug. [Fixed with import of
|
|
version 1.15 2000/01/12]
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15872">bin/15872</a></dt>
|
|
|
|
<dd>at(1) has a problem with valid time specifications if tm_year is 100,
|
|
reports `garbled time'.
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16238">misc/16238</a></dt>
|
|
|
|
<dd>KerberosIV install does not work properly because there is a hard-wired
|
|
expiration date of 12/31/99 in the Kerberos source for the ticket
|
|
granter. [Fixed v1.24 1999/09/19]
|
|
</dd>
|
|
</dl>
|
|
|
|
<h2>Problematic applications</h2>
|
|
|
|
<dl>
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=7681">ports/7681</a></dt>
|
|
|
|
<dd>TkDesk 1.0 uses a hardcoded 19 in the file listing window. A file
|
|
with a date > 2000 is displayed with a year looking like "191xx"
|
|
where xx is the last two numbers of the real date. This bug has been
|
|
fixed in version 1.1. [Port updated 1998/10/10; fixes in FreeBSD-3.0
|
|
and above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9295">ports/9295</a></dt>
|
|
|
|
<dd>INN 1.7.2 suffers from 2 Y2K related problems. One occurs when
|
|
pulling news (-f option to nntpget) and the other relates to the
|
|
Expire header with relative dates past 2000. [Both INN ports upgraded
|
|
to INN 2.2 1999/05/02; fixes in FreeBSD-3.2 and above]</dd>
|
|
|
|
<dt><a href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9298">ports/9298</a></dt>
|
|
|
|
<dd>Knews suffers from 2 Y2K related problems. One occurs during the
|
|
generation of the NNTP NEWGROUPS command. The other occurs because
|
|
knews doesn't think that 2000 is a leap year. Both are fixed in
|
|
knews-1.0b.1. [Port updated 1999/01/07; fixes in FreeBSD-3.1 and
|
|
above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=9300">ports/9300</a></dt>
|
|
|
|
<dd>Nntp-t5 suffers from a Y2K problem during the generation of the
|
|
NEWNEWS command. [Port patched 1999/01/05; fixes in FreeBSD-3.1 and
|
|
above]</dd>
|
|
|
|
<dt><a href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=11144">ports/11144</a></dt>
|
|
|
|
<dd>The tiff port has a hardcoded 19xx. While this is in the contrib
|
|
section (for converting Sun rasterfile format to TIFF), and not
|
|
installed by default, this should be patched. [Port patched
|
|
1999/04/18, followed by upgrade 1999/05/11; fixes in FreeBSD-3.2 and
|
|
above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=11145">ports/11145</a></dt>
|
|
|
|
<dd>The dgs port suffers from the same TIFF related problem as the tiff
|
|
port. [contrib routine for converting Sun rasterfiles to TIFF] [Port
|
|
patched 1999/04/18; fixes in FreeBSD-3.2 and above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=13694">ports/13694</a></dt>
|
|
|
|
<dd>The slurp port has a problem generating a correctly formatted host file
|
|
name when tm_year is greater than 100. [Port patched 1999/10/27; fixes
|
|
in FreeBSD-3.3-STABLE and above]</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15477">ports/15477</a></dt>
|
|
|
|
<dd>wwwstat port has a hardcoded 19.
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15789">ports/15789</a></dt>
|
|
|
|
<dd>proftpd has a minor Y2K problem. [Port patched 1999/12/22]
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15820">ports/15820</a></dt>
|
|
|
|
<dd>sendfile has a problem not setting the atime and mtime properly
|
|
for files sent after year 1999.
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15854">ports/15854</a></dt>
|
|
|
|
<dd>dclock uses localtime and in particular the references to
|
|
tm_year do not take into account the year 2000. [Port patched 2000/01/04]
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15868">ports/15868</a></dt>
|
|
|
|
<dd>The reporting function of hylafax (xferstats) is not y2k compatible.
|
|
[Port patched 2000/01/24]
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=15926">ports/15926</a></dt>
|
|
|
|
<dd>A y2k bug in leafnode+ 2.9 considers incoming news articles with the
|
|
(arguably bogus) Date: header like `Wed, 05 Jan 00 15:01:40 GMT'
|
|
to be too old, so these incoming articles are dropped. [Fixed by upgrading
|
|
port to version 2.10 2000/01/24]
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16062">ports/16062</a></dt>
|
|
|
|
<dd>Japanese e2ps port has hardcoded 19. [Port patched 2000/01/24]
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16073">ports/16073</a></dt>
|
|
|
|
<dd>nntp port 1.5.11.5 has Y2K related problems.
|
|
[Port upgraded to version 1.5.12.2 2000/01/12]
|
|
</dd>
|
|
|
|
<dt><a
|
|
href="http://www.FreeBSD.org/cgi/query-pr.cgi?pr=16167">ports/16167</a></dt>
|
|
|
|
<dd>This is a bug-fix release that corrects a y2k bug in INN 2.2.1 that will show
|
|
up in the NEWNEWS and NEWGROUPS commands after 2000-01-01 00:00:00 when
|
|
the date specified to the command is before 2000-01-01 00:00:00.
|
|
[Port upgraded to version 2.2.2 2000/01/28]
|
|
</dd>
|
|
|
|
<dd>NetHack 3.2.2 and earlier versions are not Y2K compliant (the score file
|
|
used 2 digit years and will be corrupted if added to in the year 2000).
|
|
[Port updated to version 3.2.3 2000/01/05]
|
|
</dd>
|
|
|
|
<dd>Japanese mnews port has Y2K problems.
|
|
[Port updated to version 1.22 1999/12/26]
|
|
</dd>
|
|
</dl>
|
|
|
|
<h2>More information</h2>
|
|
|
|
<p>If you have further questions about FreeBSD's year 2000 compliance, or
|
|
you have discovered an application running under FreeBSD that is not Y2K
|
|
compliant, please contact the project at <a
|
|
href="mailto:freebsd-bugs@FreeBSD.ORG">freebsd-bugs@FreeBSD.ORG</a>.</p>
|
|
|
|
&footer;
|
|
</body>
|
|
</html>
|
|
|
|
<!--
|
|
Local Variables:
|
|
mode: sgml
|
|
sgml-indent-data: t
|
|
sgml-omittag: nil
|
|
sgml-always-quote-attributes: t
|
|
End:
|
|
-->
|