Осы жексенбіде GPSD қатесі уақытты 19 жыл артқа қояды.

GPS құрылғыларынан нақты уақыт пен позиция деректерін алу үшін пайдаланылатын GPSD пакетінде маңызды мәселе анықталды, осыған байланысты уақыт 24 қазанда 1024 аптаға артқа жылжиды, яғни. уақыт 2002 жылдың наурызына ауыстырылады. Мәселе 3.20 және 3.22 нұсқаларын қоса алғанда пайда болады және GPSD 3.23 нұсқасында шешілді. GPSD пайдаланатын жүйелердің барлық пайдаланушылары жаңартуларды дереу орнатуы немесе сәтсіздікке дайын болуы керек.

Қатенің әсері әртүрлі жүйелерде, соның ішінде GPSD-ді тікелей пайдаланбайтын жүйелерде күтпеген ақауларға әкелуі мүмкін, өйткені бұл қолданба уақытты синхрондау үшін пайдаланылатын кейбір NTP серверлерінде нақты уақыт деректерін алу үшін пайдаланылады. Жүйелерде уақыт ауысымдары орын алған кезде аутентификацияда (мысалы, бір реттік құпия сөздер, Kerberos және жарамдылық мерзімі біткен басқа кіруді тексеру механизмдері бұдан былай жұмыс істемейді), сертификатты тексеруде және уақыт ауқымдарын басқаратын есептеулерде ( мысалы, пайдаланушы сеансының уақытын есептеу). GPSD сонымен қатар ендірілген және мобильді құрылғылардың алуан түрлерінде қол жетімді, олардың көпшілігі микробағдарлама жаңартуларын қабылдамайды.

GPS протоколы 5 жылдың 1980 қаңтарынан бастап апталарды санайтын апталық есептегішті қамтиды. Мәселе мынада, хабар тарату кезінде бұл есептегішке тек 10 бит бөлінеді, яғни ол әр 1023 апта сайын (19.7 жыл) асып кетеді. Бірінші толып кету 1999 жылы болды, екіншісі 2019 жылы, ал үшіншісі 2038 жылы болады. Бұл оқиғаларды өндірушілер бақылайды және олар үшін арнайы өңдеушілер қамтамасыз етіледі. Қазіргі уақытта санауыш үшін 13 бит бөлінген (яғни толып кету тек 2137 жылы ғана күтілетін) параллельді түрде жаңа GPS хабарлама пішімі (CNAV) енгізілді.

GPSD-де қосымша секундтың пайда болуын реттеу логикасында (әлемдік анықтамалық атомдық сағаттарды Жердің астрономиялық уақытымен синхрондау үшін қосылған) қате жіберілді, соның салдарынан 24 жылдың 2021 қазанында 1024 саны мерзімінен бұрын алынып тасталады. апталық есептегіш. Код авторының айтуынша, ауысым 31 жылдың 2022 желтоқсанында болуы керек еді, бірақ бұл күнді апталар санына аудару дұрыс жүргізілмеген және шын мәнінде чекте берілген апталар саны 2021 жылдың қазан айына сәйкес келген. (көрсетілген мән 2180 орнына 2600). /* сананы тексеру аптасының нөмірі, GPS дәуірі, кібісе секундтарға қарсы * Регрессиялармен жақсы жұмыс істемейді, себебі секіріс_секундтары * ресиверден немесе BUILD_LEAPSECONDS-тен болуы мүмкін. */ if (0 < сеанс->контекст->сеанс-секундтар && 19 > сессия->контекст->кібісе_секундтар && 2180 < апта) { /* 19 жылдың 31 желтоқсанына секіріс секунд = 2022 деп есептейміз * сондықтан апта > 2180 болашақта , оған жол бермеу */ апта -= 1024; GPSD_LOG(LOG_WARN, &сеанс->контекст->қате, "GPS аптасының шатасуы. %d секіріс үшін %u аптасы реттелген\n", апта, сеанс->контекст->секундтар); }

Ақпарат көзі: opennet.ru

пікір қалдыру