@article{oai:ipsj.ixsq.nii.ac.jp:00239377, author = {星名, 藍乃介 and 穐山, 空道 and 上原, 哲太郎 and Rannosuke, Hoshina and Soramichi, Akiyama and Tetsutaro, Uehara}, issue = {9}, journal = {情報処理学会論文誌}, month = {Sep}, note = {UNIX timeで表現されたタイムスタンプ値が32bit符号付き整数型で定義された場合,2038年1月19日3時14分8秒以降の時刻で整数オーバーフローする.この整数オーバーフローはシステムにさまざまな不具合を引き起こす可能性があり,2038年問題と呼ばれる.2038年問題への対応として,64bitなどの32bitを超えるデータ型でタイムスタンプ値を扱う対策が一般に知られている.この対策において,タイムスタンプ値のデータ型は,外部プログラムも含めたデータフローの中で一貫して32bitを超えるよう維持される必要がある.もし,どこか1カ所でも32bit符号付き整数値として扱われると,整数オーバーフローを引き起こす可能性がある.本研究では,このような2038年問題のうち,ファイルシステムからの入出力時およびダウンキャスト時の整数オーバーフローに着目し,C言語プログラムから検出する手法を提案する.また,提案手法の有効性を示すため,検出手法に用いるツールを開発し,C言語OSSを対象に検証を行った.検証の結果,一部のFalse Positiveな検出は見られたものの,我々のツールは874のプロジェクトのうち294のプロジェクトから3,463の該当表現を検出した., When timestamp values expressed in UNIX time are defined as 32-bit signed integers, an integer overflow occurs at times after 3:14:08 on January 19, 2038. This integer overflow may cause various system failures and it is known as the 2038 problem. As a countermeasure against the 2038 problem, it is generally known the method to handle timestamp values with data types that exceed 32 bits, such as 64 bits. In this countermeasure, the data type of the timestamp value must be maintained to consistently exceed 32 bits in the data flow, including external programs. If the timestamp value is represented as a 32-bit signed integer type at even one point in the data flow, it may cause an integer overflow. In this study, we focus on integer overflows in file system I/O and downcast, and we propose a method to detect them from programs written in C. In addition, to demonstrate the effectiveness of the proposed method, we developed a tool used in the detection method and verified it on various OSS developed in C. As a result of the validation, our tool detected 3,463 relevant expressions from 294 projects out of 874 projects, although some false positives were found.}, pages = {1387--1398}, title = {32bitを超えるtime_t型を持つ環境における2038年問題とその検出}, volume = {65}, year = {2024} }