今週日曜日の GPSD のエラーは 19 年前の時間の変化に変換される

GPS デバイスから正確な時刻と位置データを抽出するために使用される GPSD パッケージで重大な問題が確認されました。このため、時間が 24 月 1024 日、つまり 2002 週間前に戻ります。 時刻は 3.20 年 3.22 月に変更されます。 この問題はリリース 3.23 から XNUMX までで発生し、GPSD XNUMX で解決されています。 GPSD を使用するシステムのすべてのユーザーは、アップデートを直ちにインストールするか、障害に備える必要があります。

このアプリケーションは、時刻同期に使用される一部の NTP サーバーで正確な時刻データを取得するために使用されるため、GPSD を直接使用しないシステムを含む、さまざまなシステムでエラーの影響により予期せぬ障害が発生する可能性があります。 システムで時間のずれが発生すると、認証 (たとえば、ワンタイム パスワード、Kerberos、および有効期限のあるその他のアクセス検証メカニズムが機能しなくなります)、証明書の検証、および時間範囲を操作する計算で問題が発生する可能性があります (たとえば、ユーザーのセッションの時間を計算します)。 GPSD はさまざまな組み込みデバイスやモバイル デバイスでも利用できますが、その多くはファームウェアのアップデートを受信できなくなりました。

GPS プロトコルには、5 年 1980 月 10 日からの週をカウントする週カウンターが含まれています。 問題は、放送中にこのカウンタに 1023 ビットしか割り当てられないことです。つまり、19.7 週間 (1999 年) ごとにオーバーフローします。 最初のオーバーフローは 2019 年に発生し、2038 回目は 13 年に発生し、2137 回目は XNUMX 年に発生します。 これらのイベントはメーカーによって監視されており、特別なハンドラーがメーカー用に提供されています。 現在、新しい GPS メッセージ フォーマット (CNAV) が並行して導入されており、カウンターに XNUMX ビットが割り当てられています (つまり、オーバーフローは XNUMX 年にのみ予想されます)。

GPSD では、余分な 24 秒の表示を調整するロジック (世界の基準原子時計を地球の天文時と同期させるために追加) でエラーが発生し、2021 年 1024 月 31 日に 2022 が時期尚早に減算されます。週カウンター。 コードの作成者によると、この変更は 2021 年 2180 月 2600 日に発生するはずでしたが、この日付から週数への変換が正しく行われず、実際には小切手に記載された週数は 0 年 19 月に該当していました。 (示された値は 2180 ではなく 19 です)。 /* 閏秒に対する週番号、GPS エポックの健全性チェック * 閏秒は * 受信機または BUILD_LEAPSECONDS からのものである可能性があるため、回帰ではうまく機能しません。 */ if (31 < session->context->うるう秒 && 2022 > session->context->leap_seconds && 2180 < 週) { /* 1024 年 XNUMX 月 XNUMX 日までにうるう秒 = XNUMX と仮定します * したがって、週 > XNUMX はかなり先のことです、許可しないでください */ 週 -= XNUMX; GPSD_LOG(LOG_WARN, &session->context->errout, "GPS 週の混乱。閏 %d に合わせて週 %u を調整しました\n", year, session->context->leap_seconds); }

出所: オープンネット.ru

コメントを追加します