32bitを超えるtime_t型をもつ環境における2038年問題の検出手法の提案

抄録

UNIX time で表現されたタイムスタンプ値が 32bit 符号付き整数型で定義された場合,2038 年 1 月 19 日 3 時 14 分 8 秒以降の時刻で整数オーバーフローする.この整数オーバーフローはシステムにさまざまな不具合を引き起こす可能性があり,2038 年問題と呼ばれる.2038 年問題への対応として,64bit などの 32bit を超えるデータ型でタイムスタンプ値を扱う対策が一般に知られている.この対策において,タイムスタンプ値のデータ型はデータフローの中で一貫して 32bit を超えるよう維持される必要があるが,どこか一箇所でも 32bit 符号付き整数型で表現されてしまうと,整数オーバーフローを引き起こす可能性がある.また,既存ツールを用いても,このデータ型の一貫性を確認することは困難である.本研究では,C 言語プログラムにおいて,time_t 型の値が一貫して 32bit を超えるデータサイズになるよう維持されているかを検査するツールを開発した.また,実際に検出ツールを用いて,32bit を超えるデータ型でタイムスタンプ値を定義しているにも関わらず,2038 年問題に起因する不具合の可能性がある C 言語プログラムが多く存在することを示し,その脅威性について評価する.

収録刊行物

詳細情報 詳細情報について

問題の指摘

ページトップへ