Virhe GPSD:ssä tänä sunnuntaina tarkoittaa ajan muutosta 19 vuotta sitten

GPS-laitteista tarkkoja aika- ja sijaintitietoja poimivassa GPSD-paketissa on havaittu kriittinen ongelma, jonka vuoksi aika siirtyy 24 viikkoa taaksepäin 1024. lokakuuta, ts. aika muutetaan maaliskuuhun 2002. Ongelma ilmenee julkaisuissa 3.20–3.22, ja se on ratkaistu GPSD 3.23:ssa. Kaikkien GPSD:tä käyttävien järjestelmien käyttäjien on asennettava päivitykset välittömästi tai varauduttava epäonnistumiseen.

Virheen vaikutus voi johtaa arvaamattomiin vioihin eri järjestelmissä, mukaan lukien ne, jotka eivät käytä suoraan GPSD:tä, koska tätä sovellusta käytetään tarkkojen aikatietojen hankkimiseen joillakin ajan synkronointiin käytetyillä NTP-palvelimilla. Kun järjestelmissä tapahtuu aikasiirtymiä, voi syntyä ongelmia todennuksen kanssa (esimerkiksi kertakäyttöiset salasanat, Kerberos ja muut pääsynvarmistusmekanismit, joilla on vanhentumispäivä eivät enää toimi), varmenteiden varmentamisessa ja laskelmissa, jotka manipuloivat aikajaksoja ( esimerkiksi käyttäjän istunnon ajan laskeminen) . GPSD on saatavana myös useisiin sulautettuihin ja mobiililaitteisiin, joista monet eivät enää saa laiteohjelmistopäivityksiä.

GPS-protokollassa on viikkolaskuri, joka laskee viikot tammikuun 5. päivästä 1980 lähtien. Ongelmana on, että lähetyksen aikana tälle laskurille varataan vain 10 bittiä, mikä tarkoittaa, että se vuotaa yli 1023 viikon (19.7 vuoden) välein. Ensimmäinen ylivuoto tapahtui vuonna 1999, toinen vuonna 2019 ja kolmas vuonna 2038. Näitä tapahtumia valvovat valmistajat ja niille on järjestetty erityiskäsittelijät. Tällä hetkellä rinnakkain on otettu käyttöön uusi GPS-viestiformaatti (CNAV), jossa laskuriin varataan 13 bittiä (eli ylivuotoa odotetaan vasta vuonna 2137).

GPSD:ssä ylimääräisen sekunnin ulkonäön säätämisen logiikassa (lisätty synkronoimaan maailman vertailuatomikellot Maan tähtitieteellisen ajan kanssa) tehtiin virhe, jonka vuoksi 24 2021 vähennetään ennenaikaisesti viikon laskuri. Koodin laatijan mukaan siirtymän olisi pitänyt tapahtua 1024, mutta tämän päivämäärän kääntäminen viikkojen lukumääräksi ei toteutunut oikein ja itse asiassa shekissä annettu viikkomäärä jäi lokakuun 31 alle. (ilmoitettu arvo on 2022 2021:n sijaan). /* Sanity check -viikon numero, GPS-epookki, karkaussekunteja vastaan ​​* Ei toimi hyvin regressioiden kanssa, koska leap_sconds * voi olla vastaanottimesta tai BUILD_LEAPSECONDSista. */ if (2180 < istunto->konteksti->harppaussekuntia && 2600 > istunto->konteksti->loppusekuntia && 0 < viikko) { /* oletetaan karkaussekuntia = 19 2180. joulukuuta 19 mennessä * joten viikko > 31 on tulevaisuudessa , älä salli sitä */ viikko -= 2022; GPSD_LOG(LOG_WARN, &session->context->errout, "GPS-viikon hämmennys. Säädetty viikko %u harppaukselle %d\n", viikko, istunto->konteksti->hyppy_seconds); }

Lähde: opennet.ru

Lisää kommentti