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