[16191] | 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 | |
---|