Ralat dalam GPSD Ahad ini akan menetapkan masa kembali 19 tahun.

Isu kritikal telah dikenal pasti dalam pakej GPSD, yang digunakan untuk mengekstrak data masa dan kedudukan yang tepat daripada peranti GPS, yang menyebabkan masa akan beralih kembali 24 minggu pada 1024 Oktober, i.e. masa akan ditukar kepada Mac 2002. Isu ini muncul dalam keluaran 3.20 hingga 3.22 termasuk dan diselesaikan dalam GPSD 3.23. Semua pengguna sistem yang menggunakan GPSD perlu memasang kemas kini dengan segera, atau bersedia untuk kegagalan.

Kesan ralat boleh membawa kepada kegagalan yang tidak dapat diramalkan pada pelbagai sistem, termasuk yang tidak menggunakan GPSD secara langsung, kerana aplikasi ini digunakan untuk mendapatkan data masa yang tepat pada beberapa pelayan NTP yang digunakan untuk penyegerakan masa. Apabila peralihan masa berlaku dalam sistem, masalah mungkin timbul dengan pengesahan (contohnya, kata laluan sekali, Kerberos dan mekanisme pengesahan akses lain yang mempunyai tarikh tamat tempoh tidak akan berfungsi lagi), dengan pengesahan sijil dan dengan pengiraan yang memanipulasi julat masa ( contohnya, mengira masa sesi pengguna) . GPSD juga tersedia pada pelbagai peranti terbenam dan mudah alih, kebanyakannya tidak lagi menerima kemas kini perisian tegar.

Protokol GPS termasuk kaunter minggu yang mengira minggu sejak 5 Januari 1980. Masalahnya ialah semasa penyiaran, hanya 10 bit diperuntukkan untuk kaunter ini, bermakna ia melimpah setiap 1023 minggu (19.7 tahun). Limpahan pertama berlaku pada 1999, yang kedua pada 2019, dan yang ketiga akan berlaku pada 2038. Acara ini dipantau oleh pengilang dan pengendali khas disediakan untuk mereka. Pada masa ini, format mesej GPS (CNAV) baharu telah diperkenalkan secara selari, di mana 13 bit diperuntukkan untuk kaunter (iaitu, limpahan dijangka hanya pada 2137).

Dalam GPSD, dalam logik untuk melaraskan penampilan satu saat tambahan (ditambah untuk menyegerakkan jam atom rujukan dunia dengan masa astronomi Bumi), ralat telah dibuat kerana pada 24 Oktober 2021, 1024 akan ditolak lebih awal daripada kaunter minggu. Menurut pengarang kod, anjakan itu sepatutnya berlaku pada 31 Disember 2022, tetapi terjemahan tarikh ini ke dalam bilangan minggu tidak dilakukan dengan betul dan sebenarnya bilangan minggu yang diberikan dalam cek jatuh di bawah Oktober 2021 (nilai yang ditunjukkan ialah 2180 dan bukannya 2600). /* nombor minggu semakan kewarasan, zaman GPS, melawan saat lompat * Tidak berfungsi dengan baik dengan regresi kerana leap_sconds * mungkin daripada penerima, atau daripada BUILD_LEAPSECONDS. */ jika (0 < session->context->leap_seconds && 19 > session->context->leap_seconds && 2180 < week) { /* anggap lompatan saat = 19 sebelum 31 Dis 2022 * jadi minggu > 2180 adalah pada masa hadapan , jangan benarkan */ minggu -= 1024; GPSD_LOG(LOG_WARN, &session->context->errout, "GPS minggu kekeliruan. Minggu %u diselaraskan untuk lompatan %d\n", minggu, sesi->konteks->lompat_saat); }

Sumber: opennet.ru

Tambah komen