223 lines
		
	
	
	
		
			9.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			223 lines
		
	
	
	
		
			9.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
 | |
| <!ENTITY date "$Date: 1999-01-28 19:41:21 $">
 | |
| <!ENTITY title 'Year 2000 Compatibility (aka "Millennium Bug")'>
 | |
| <!ENTITY % includes SYSTEM "includes.sgml"> %includes;
 | |
| ]>
 | |
| <!-- $Id: y2kbug.sgml,v 1.18 1999-01-28 19:41:21 billf 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 millenium bug. Nor is waiting until the last
 | |
|       minute. The FreeBSD Project recommends that your organization
 | |
|       apply sound system administration principles as the millenium
 | |
|       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>
 | |
| 
 | |
|     <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.</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.</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.</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.</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.</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.
 | |
|       </dd>
 | |
| 
 | |
|       <dt><a href="http://www.freebsd.org/cgi/cvsweb.cgi/src/gnu/usr.bin/tar/getdate.y.diff?r1=1.3&r2=1.4">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!
 | |
|       </dd>
 | |
| 
 | |
|       <dt><a href="http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/fetch/http.c.diff?r1=1.22&r2=1.24">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.
 | |
|       </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.
 | |
|       </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.
 | |
|       </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).
 | |
|       </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.
 | |
|       </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.
 | |
|       </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.
 | |
|       </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.
 | |
|       </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.</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.</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.</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.</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>
 | |
| 
 |