Bu bazar günü GPSD-də səhv 19 il əvvəlki vaxt dəyişikliyinə çevrilir

GPS cihazlarından dəqiq vaxt və mövqe məlumatlarını çıxarmaq üçün istifadə edilən GPSD paketində kritik problem müəyyən edilmişdir, buna görə də vaxt 24 oktyabrda 1024 həftə geriyə çəkiləcək, yəni. vaxt 2002-ci ilin martına dəyişdiriləcək. Problem 3.20-dən 3.22-yə qədər olan buraxılışlarda görünür və GPSD 3.23-də həll olunur. GPSD istifadə edən sistemlərin bütün istifadəçiləri dərhal yeniləmələri quraşdırmalı və ya uğursuzluğa hazır olmalıdırlar.

Səhvin təsiri müxtəlif sistemlərdə, o cümlədən GPSD-dən birbaşa istifadə etməyən sistemlərdə gözlənilməz uğursuzluqlara səbəb ola bilər, çünki bu proqram vaxt sinxronizasiyası üçün istifadə edilən bəzi NTP serverlərində dəqiq vaxt məlumatlarını əldə etmək üçün istifadə olunur. Sistemlərdə vaxt dəyişikliyi baş verdikdə, identifikasiya (məsələn, birdəfəlik parollar, Kerberos və istifadə müddəti bitmiş digər giriş yoxlama mexanizmləri artıq işləməyəcək), sertifikatın yoxlanılması və vaxt diapazonlarını idarə edən hesablamalarla problemlər yarana bilər. məsələn, istifadəçinin sessiyasının vaxtının hesablanması). GPSD həmçinin müxtəlif quraşdırılmış və mobil cihazlarda mövcuddur, onların çoxu artıq mikroproqram yeniləmələrini almır.

GPS protokoluna 5 yanvar 1980-ci ildən etibarən həftələri sayan həftə sayğacı daxildir. Problem ondadır ki, yayım zamanı bu sayğac üçün cəmi 10 bit ayrılır, yəni onun hər 1023 həftədən bir (19.7 il) daşması deməkdir. Birinci daşqın 1999-cu ildə, ikincisi 2019-cu ildə, üçüncüsü isə 2038-ci ildə baş verəcək. Bu hadisələr istehsalçılar tərəfindən izlənilir və onlar üçün xüsusi işləyicilər təmin edilir. Hal-hazırda, paralel olaraq yeni GPS mesaj formatı (CNAV) təqdim edilmişdir ki, burada sayğac üçün 13 bit ayrılmışdır (yəni, daşqın yalnız 2137-də gözlənilir).

GPSD-də əlavə bir saniyənin görünüşünü tənzimləmək məntiqində (dünyanın istinad atom saatlarını Yerin astronomik vaxtı ilə sinxronlaşdırmaq üçün əlavə edildi) səhvə yol verildi, buna görə 24 oktyabr 2021-ci ildə 1024 vaxtından əvvəl çıxılacaq. həftə sayğacı. Kodun müəllifinin fikrincə, yerdəyişmə 31 dekabr 2022-ci ildə baş verməli idi, lakin bu tarixin həftələrin sayına çevrilməsi düzgün aparılmayıb və əslində çekdə göstərilən həftələrin sayı 2021-ci ilin oktyabrına düşüb. (göstərilən dəyər 2180 əvəzinə 2600-dir). /* ağlı başında olma həftəsinin sayı, GPS dövrü, sıçrayış saniyələrinə qarşı * Reqressiyalar ilə yaxşı işləmir, çünki sıçrayış_sconds * qəbuledicidən və ya BUILD_LEAPSECONDS-dan ola bilər. */ if (0 < sessiya->kontekst->sıçrayış_saniyələri && 19 > sessiya->kontekst->sıçrayış_saniyələri && 2180 < həftə) { /* 19 dekabr 31-ci ilə qədər sıçrayış saniyəsi = 2022 hesab edin * beləliklə, həftə > 2180 gələcəkdir , icazə verməyin */ həftə -= 1024; GPSD_LOG(LOG_WARN, &sessiya->kontekst->səhv, "GPS həftəsi çaşqınlığı. Düzəliş edilmiş həftə %u sıçrayış üçün %d\n", həftə, sessiya->kontekst->sıçrayış_saniyələri); }

Mənbə: opennet.ru

Добавить комментарий