1: Name of the Application: xntp
2:
3: Version Number: 4.0.91
4:
5: Download Size: 4541953 bytes
6:
7: Downloaded from: http://www.eecis.udel.edu/~ntp/
8:
9: Operating Systems Supported: many
10:
11: Operating Systems Tested: unix
12:
13: Testing
14:
15: Dates tested (CPU clock set)
16:
17: 1999-12-31
18: 2000-01-01
19: 2000-02-29
20:
21: Critical fragments of code tested with other dates by special
22: algorithms.
23:
24: Hardware Platform: Sun Sparc
25:
26: OS: Solaris 2.6
27:
28: Compiler: gcc
29:
30: Version: 2.8.1
31:
32: Repairs: 9
33:
34: No. of files Repaired: 13
35:
36:
37: Compilation of Patches Required: yes
38:
39: Results Description:
40:
41: 1) Tested suspicious code.
42:
43: 2) Repaired problem code and added documentation to ntp.h.
44:
45: 3) Verified ntpd works on critical Y2K dates.
46:
47:
48: Comments:
49:
50: 1) Errors were found in improper use of tm_year within struct tm,
51: calculations that did not support year 2000 as a leap year
52: (it truly is, despite any unchanged comments remaining in
53: the NTP source), and some incorrect date calculations, while
54: not traditional Y2K errors, would break in the year 2000.
55:
56: 2) include/ntpd.h
57: Added some definitions and documentation about the right way
58: of doing things. Definitions used by most, if not all, of
59: the Y2K repairs.
60:
61: Cautions:
62:
63: 1) Some of the Y2K repairs were to reference clock drivers that
64: we did not have the local hardware to test. While I believe
65: the changes are sound, they really need to be tested.
66: This includes:
67:
68: refclock_arc.c
69: refclock_heath.c
70: refclock_hpgps.c
71:
72: Also, parseutil/dcfd.c is another hardware dependent module that
73: was repaired without live testing.
74:
75: Non-Y2K Problems Observed:
76:
77: 1) Inconsistent casts of variables containing time values may
78: make expansion to 64 bit integer values in a portable manner
79: difficult.
80:
81: 2) libntp/caltontp.c:
82: Has logic I believe will fail starting in year 2100 or so.
83: Left unchanged/untested as it works well beyond basic NTP 2036
84: limit checked by check_y2k.c.
85: If NTP is implemented on 64-bit machines, this should be fixed
86:
87: 3) ntpd/refclock_acts.c:
88: ACTS time format has changed somewhat since the code was written.
89: In particular the '*' '#' character switch no longer occurs...
90: only '*' is typed.
91:
92: NOTE: Author (falsely) stated Y2K is NOT a leap year when it
93: really is.
94:
95: TRUTH: ACTS will go beyond Y2K: it uses FourDigitYear % 100 values
96: for year so year 2000 will revert to "00".
97:
98:
99: 4) ntpd/refclock_oncore.c
100: Some very strange logic in manipulating year values:
101: 1122 instance->pp->year = buf[6]*256+buf[7];
102: Multiply by 256????
103:
104: Response from PHK:
105: The entire protocol is binary, the year is a 16 bit quantity
106: which according to the manual can have the range 1998-2018.
107:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>