1Name of the Application: xntp 2 3Version Number: 4.0.91 4 5Download Size: 4541953 bytes 6 7Downloaded from: http://www.eecis.udel.edu/~ntp/ 8 9Operating Systems Supported: many 10 11Operating Systems Tested: unix 12 13Testing 14 15Dates 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 24Hardware Platform: Sun Sparc 25 26OS: Solaris 2.6 27 28Compiler: gcc 29 30Version: 2.8.1 31 32Repairs: 9 33 34No. of files Repaired: 13 35 36 37Compilation of Patches Required: yes 38 39Results Description: 40 411) Tested suspicious code. 42 432) Repaired problem code and added documentation to ntp.h. 44 453) Verified ntpd works on critical Y2K dates. 46 47 48Comments: 49 501) 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 562) 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 61Cautions: 62 631) 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 75Non-Y2K Problems Observed: 76 771) Inconsistent casts of variables containing time values may 78 make expansion to 64 bit integer values in a portable manner 79 difficult. 80 812) 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 873) 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 994) 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 108