GPSD-paketissa, joka poimii tarkat aika- ja koordinaattitiedot GPS-laitteista, on havaittu kriittinen ongelma. Tämä ongelma siirtää aikaa 1024 viikkoa taaksepäin 24. lokakuuta eli maaliskuuhun 2002. Ongelma vaikuttaa julkaisuihin 3.20–3.22 ja se on korjattu GPSD-versiossa 3.23. Kaikkien GPSD:tä käyttävien järjestelmien käyttäjien on asennettava päivitykset välittömästi tai varauduttava häiriöihin.
Virheen vaikutus voi johtaa arvaamattomiin vikoihin useissa järjestelmissä, mukaan lukien niissä, jotka eivät käytä GPSD:tä suoraan, koska tätä sovellusta käytetään tarkkojen aikatietojen hakemiseen joiltakin aikasynkronoinnissa käytetyiltä NTP-palvelimilta. Aikasiirtymä järjestelmissä voi aiheuttaa ongelmia todennuksessa (esimerkiksi kertakäyttöiset salasanat, Kerberos ja muut vanhenemisaikaiset käyttöoikeuksien hallintamekanismit eivät enää toimi), varmenteiden varmentamisessa ja aikavälejä käsittelevissä laskelmissa (esimerkiksi käyttäjäistuntojen kestojen laskemisessa). GPSD on saatavilla myös useissa sulautetuissa ja mobiililaitteissa, joista monet eivät enää vastaanota laiteohjelmistopäivityksiä.
GPS-protokolla sisältää viikkolaskurin, joka laskee viikkoja 5. tammikuuta 1980 lähtien. Ongelmana on, että tälle laskurille on lähetyksen aikana varattu vain 10 bittiä, mikä tarkoittaa, että se ylivuotoa tapahtuu 1023 viikon (19.7 vuoden) välein. Ensimmäinen ylivuoto tapahtui vuonna 1999, toinen vuonna 2019 ja kolmas vuonna 2038. Valmistajat seuraavat näitä tapahtumia, ja niitä varten on olemassa erityisiä käsittelijöitä. Uusi GPS-viestimuoto (CNAV) on otettu käyttöön rinnakkain, ja laskurille on varattu 13 bittiä (eli ylivuotoa ei odoteta tapahtuvan ennen vuotta 2137).
GPSD:ssä karkaussekuntien korjauslogiikkaan (lisätty synkronoimaan maailman referenssiatomikellot Maan tähtitieteellisen ajan kanssa) tuli virhe, joka aiheutti luvun 1024 ennenaikaisen vähentämisen viikkolaskurista 24. lokakuuta 2021. Koodin tekijä tarkoitti siirron tapahtuvan 31. joulukuuta 2022, mutta tämän päivämäärän muuntaminen viikkojen lukumääräksi suoritettiin väärin, ja tarkistuksessa ilmoitettu todellinen viikkojen lukumäärä osui lokakuun 2021 ajalle (ilmoitettu arvo oli 2180 2600:n sijaan). /* järjellisyystarkistus viikkonumerolle, GPS-epookille, karkaussekunteja vastaan * Ei toimi hyvin regressioiden kanssa, koska karkaussekuntia * voi olla vastaanottimesta tai BUILD_LEAPSECONDS-muuttujasta. */ if (0 < session->context->leap_seconds && 19 > session->context->leap_seconds && 2180 < week) { /* oletetaan karkaussekunnin olevan 19 31.12.2022 mennessä * joten viikko > 2180 on kaukana tulevaisuudessa, älä salli sitä */ week -= 1024; GPSD_LOG(LOG_WARN, &session->context->errout, "GPS-viikkosekaannus. Säädetty viikko %u karkaukselle %d\n", week, session->context->leap_seconds); }
Lähde: opennet.ru
