glibc在默認情況下并未妥善解決Y2038問題
由于 Y2038 問題, Linux Kernel 早在幾年前就已經(jīng)切換到 64 位 time_t,而且發(fā)行版 Alpine 3.13 時也跳到了 64 位 time_t。不過近日,Alpine 安全團隊主管 Ariadne Conill 發(fā)文表示 GNU libc 2.34 在支持 64 位 time_t 上存在缺陷,可能在過渡過程中產(chǎn)生障礙。
訪問:
ECS年終特惠:云服務器低至38元/年起
Alpine 安全團隊主管 Ariadne Conill,圖片來自于 Twitter
如果你密切關(guān)注 Linux 領(lǐng)域的發(fā)展和動向,肯定了解 2038 年錯誤(Year2038 bug)。這個問題之所以會存在,是由于到了 2038 年 1 月 19 日那天,可以用 Unix 帶符號的 32 位整數(shù)時間格式表示的最新時間是 03:14:07 UTC。
可以用 Unix 帶符號的 32 位整數(shù)時間格式來表示的最新時間是 2038 年 1 月 19 日 03:14:07 UTC,這是 1970 年 1 月 1 日之后過了 2147483647 秒。過了那個時間后,由于整數(shù)溢出,時間值將作為負數(shù)來存儲,系統(tǒng)會將日期讀為 1901 年 12 月 13 日,而不是 2038 年 1 月 19 日。
Alpine 操作系統(tǒng)是一個面向安全的輕型 Linux 發(fā)行版。它不同于通常 Linux 發(fā)行版,Alpine 采用了 musl libc 和 busybox 以減小系統(tǒng)的體積和運行時資源消耗,但功能上比 busybox 又完善的多,因此得到開源社區(qū)越來越多的青睞。
在博文中,Conill 表示在 Alpine 使用的 musl C 庫以及許多其他 UNIX C 庫實現(xiàn)中,time_t 在新代碼中總是 64 位的,并且為需要舊的 32 位函數(shù)的代碼提供了兼容性存根(compatibility stubs)。當代碼隨著時間的推移被重建時,它將自動成為符合 Y2038 標準的代碼,而無需任何努力。
微軟在 msvcrt 中又前進了一步:你默認得到 64 位的 time_t,但如果你在編譯時定義了 _USE_32BIT_TIME_T 宏,你仍然可以訪問舊的 32 位函數(shù)。需要注意的是,上面描述的兩種方法都引入了零摩擦,以獲得正確的東西。
GNU 項目為過渡到新的 ABI 所采取的方法正好相反:你必須明確要求新的功能,否則你將永遠得不到它。這種方法為將來改變默認值留下了可能性,但到目前為止,他們從未這樣做過。
這可以從大文件支持擴展中觀察到,需要處理大于 2GiB 的文件,你必須總是用 -D_FILE_OFFSET_BITS=64 來構(gòu)建你的代碼。同樣,如果你在一個 32 位系統(tǒng)上,而你沒有用 -D_TIME_BITS=64 來構(gòu)建你的應用程序,它將不會使用符合 Y2038 的 ABI 來構(gòu)建。
這是最糟糕的方式。考慮一下庫:如果一個依賴關(guān)系是用 -D_TIME_BITS=64 構(gòu)建的,而另一個依賴關(guān)系沒有,并且它們需要相互交換結(jié)構(gòu) timespec 或類似的東西,怎么辦?那么,在這種情況下,你的程序很可能會崩潰或出現(xiàn)奇怪的行為,因為你在編譯的程序中沒有持續(xù)使用相同的結(jié)構(gòu) timespec。
幸運的是,如果你的目標是32位系統(tǒng),而且你想處理大于2GiB的文件,或者有信心你的代碼在2038年還能繼續(xù)工作,有一些Linux發(fā)行版是建立在Musl之上的,比如Alpine,這將使你不必處理GNU libc的特殊性
2022-01-12 16:50:28
2022-01-12 14:16:53
2022-01-12 09:59:21
2022-01-12 08:30:09
2022-01-12 08:28:09
2022-01-12 08:26:11
2022-01-12 08:24:25
2022-01-12 08:22:56
2022-01-12 08:21:28
2022-01-12 08:19:22
2022-01-12 08:15:03
2022-01-12 08:13:37
2022-01-12 08:12:23 熱門文章
- 1消息稱Win11調(diào)整硬件安裝需求之后可運行5.25寸軟盤
- 2蘋果iPad mini 6屏幕刷新率只有60Hz屏幕或不能滿足游戲需求
- 3三星永久關(guān)閉Tizen應用商店:目前相關(guān)手機用戶已經(jīng)無法訪問
- 4三星Galaxy S22 Ultra手寫筆延遲突破2.8毫秒!成品預計今年2月推出
- 5Win11照片應用迎來更新:重新優(yōu)化調(diào)整圖片編輯功能
- 6Chrome 97正式版預計年內(nèi)2月1日轉(zhuǎn)正 修復數(shù)十個安全BUG
- 7消息稱iPhone 14 Pro前置攝像頭將采用藥丸屏設計 FaceID轉(zhuǎn)移到顯示屏下
- 8對不起,我恐怕不能這么做?用戶發(fā)現(xiàn)蘋果Siri無法為Apple Music歌曲評分
- 9微信視頻號直播推出扶持不少于10萬個優(yōu)質(zhì)商家激勵計劃 引導私域用戶直播
- 10微信支持數(shù)字人民幣支付:將新增“使用數(shù)字人民幣付款”選項
熱點專題
-
絕版旗艦堅果R2獲更新:TNT連...1月7日消息,堅果R2用戶在百度貼吧反映,堅果R2手機獲得了SmartisanOS更新,版本號為8 5 1,新版系統(tǒng)... -
iPhone 13 Pro需求產(chǎn)能供不...富士康鄭州工廠又在招工了,iPhone的產(chǎn)能缺口看來很大。據(jù)悉,iPhone 13 Pro需求旺盛,最大組裝廠富士... -
百度投資生物醫(yī)藥公司瑞順生...企查查APP顯示,1月4日,廣東瑞順生物技術(shù)有限公司發(fā)生工商變更,新增百度關(guān)聯(lián)公司三亞百川致新私募股權(quán)... -
盜版軟件Popcorn Time宣布關(guān)...1月5日 消息:盜版軟件Popcorn Time宣布關(guān)閉了。這個通過盜版BitTorrent資源向用戶傳遞電影內(nèi)容,并承... -
快手12月份打擊私單交易等詐...1月5日消息,日前,快手發(fā)布了最新一期關(guān)于嚴厲打擊詐騙類帳號的公告,該平臺 12 月份共處罰詐騙類帳... -
再也不怕磁盤占用高了!微軟W...微軟的Office辦公軟件是每個打工人幾乎都離不開的,它實際上是包括Word、Excel、PPT等多種軟件在內(nèi)的全... -
黑莓BlackBerry OS停止運行...1月4日,黑莓打造的BlackBerry OS停服。官方稱,黑莓不再提供適用于BlackBerry7 1OS及更早版本、Black... -
Intel預熱12代雞血版i9-12900...今天晚上,Intel將會發(fā)布12代酷睿桌面版非K系列、移動版,應該會有博銳商務版,以及一個特殊型號:i9-12... -
曝5G版iPhone SE將于上半年...除了挖孔屏iPhone 14、M2處理器MacBook Air、40核CPU+128核GPU的Mac Pro等產(chǎn)品,蘋果名記Mark Gurma... -
曝iPhone 14有望取消劉海設...對于iPhone 14來說,按照蘋果一貫的更新節(jié)奏看,這一代新機的外形要發(fā)生變化了,而去掉劉海,改用打孔...
Copy 2006-2020 財訊中國 版權(quán)所有<豫ICP備17019456號-9
聯(lián)系網(wǎng)站:52 78 229 @qq.com
營業(yè)執(zhí)照公示信息
聲明:本站所有文章、數(shù)據(jù)僅供參考,使用前務請仔細閱讀法律聲明,風險自負。

相關(guān)新聞