Year 2000 Compatibility
(aka "Millennium Bug")
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.
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.
Background information
(This section based on the text from the Linux Y2K compliance
page)
As with all Unix and Unix-like 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.
Note that the OS being Y2K compliant will not fix errant
applications that are not Y2K compliant.
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.
What you can do
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 not 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.
FreeBSD Year 2000 Statement
"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."
David Greenman
Principal Architect, The FreeBSD project
Fixed problems
The following Y2K problems have been identified and fixed in
FreeBSD.
- misc/1380
- 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]
- conf/1382
- 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]
- misc/3465
- 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]
- gnu/4930
and gnu/8321
- 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]
- bin/9323
- In its obsolescent form, touch doesn't treat the two
digit 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]
-
xntpd/parse/util/dcfd.c
- 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]
-
tar/getdate.y
- 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]
- fetch/http.c
- 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 RFC
2068 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]
- misc/9500
- 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]
- bin/9501
- 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]
- bin/9502
- 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]
- bin/9503
- 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]
- bin/9505
- 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]
- bin/9506
- 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]
- bin/9507
- 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]
- bin/14472
- Date command does not take thousand/hundred digits.
[Fixed v1.31 1999/11/10]
- misc/14511
- Chpass has a problem using 00 for expiration year.
- bin/15852
and gnu/16045
and bin/16207
- Groff predefined \*(DT [\*(td] string has Y2K bug. [Fixed
with import of version 1.15 2000/01/12]
- bin/15872
- at(1) has a problem with valid time specifications if
tm_year is 100, reports `garbled time'.
- misc/16238
- 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]
More information
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 freebsd-bugs@FreeBSD.ORG.
home | contact | legal |
© 1995-2003 The FreeBSD Project. All rights
reserved.
Last modified: 2003/06/18 23:27:17