Glibc 2.35 帶來了改進、錯誤修復等

經過六個月的開發 宣布發布新版 Glibc 2.35 在其中 包括來自 66 位開發人員的修復 在已實施的改進中,我們可以發現添加了對“C.UTF-8”語言環境的支持,其中包括所有 Unicode 代碼的排序規則,但僅限於在 fnmatch、regexec 和 regcomp 函數中使用 ASCII 範圍來保存空間。

語言環境約為 400 KB,其中 346 KB 是 Unicode 的 LC_CTYPE 數據,必須單獨安裝(不是內置在 Glibc 中)。 編碼數據、字符類型信息和音譯表已更新以支持 Unicode 14.0.0 規範。

另一個引人注目的變化是 是實現將結果舍入為更窄類型的函數和宏, 除了實現函數和宏來查找 IEEE 754-2019 規範中描述的 float、long double、_FloatN 和 _FloatNx 類型的浮點數的最​​小值和最大值。

對於函數 exp10,對應的宏被添加到頭文件中,它不綁定到特定類型,加上 _PRINTF_NAN_LEN_MAX 宏被添加到,在 ISO C2X 標準草案中提出。

動態鏈接系統實現了一種新的分類算法 使用深度搜索 (DFS) 的 DSO 在處理循環依賴時解決性能問題。 為了選擇DSO排序算法,提出了glibc.rtld.dynamic_sort參數,可以設置為“1”回退到之前的算法。

除了它 添加了對新函數“__memcmpeq”的支持 到 ABI,當此函數的返回值僅用於檢查操作的完成狀態時,編譯器使用它來優化 `memcmp' 的使用。

支持自動線程註冊 使用自 Linux 內核 4.18 起提供的 rseq(可重啟序列)系統調用。 rseq 系統調用 允許組織一組指令的連續執行 它不會被中斷並使用組中的最後一條語句提交結果。 本質上,它提供了一種非常快速的原子執行操作的工具,如果被另一個線程中斷,它會被清理並重試。

另一方面,它提供 所有可執行文件的默認編譯 內置程序和 PIE(與位置無關的可執行文件)模式下的測試套件。

要禁用此行為, 提供了“–disable-default-pie”選項,加上對於 Linux,添加了一個 glibc.malloc.hugetlb 設置來更改 malloc 實現以使用帶有 MADV_HUGEPAGE 標誌的 madvise 系統調用來進行 mmap 和 sbrk,或者通過在 mmap 調用中指定 MAP_HUGETLB 標誌直接使用大內存頁面。

在第一種情況下,可以通過在madvise模式下使用透明的Huge Pages來實現性能提升,而在第二種情況下,可以使用系統保留的Huge Pages(Huge Pages)。

還應該注意的是,這個新版本中修復了一些漏洞:

  • CVE-2022-23218,CVE-2022-23219: svcuix_create 和 clnt_create 函數中的緩衝區溢出,這是由於將文件名參數的內容複製到堆棧上而未檢查復制數據的大小而導致的。 對於沒有堆棧保護並使用“unix”協議構建的應用程序,該漏洞在處理非常長的文件名時可能導致惡意代碼執行。
  • CVE-2021-3998: realpath() 函數中的一個漏洞,該漏洞是由於在某些條件下返回不正確的值而導致的,其中包含來自堆棧的未清理的殘留數據。 對於SUID-root fusermount程序,該漏洞可用於從進程內存中獲取敏感信息,例如獲取指針信息。
  • CVE-2021-3999: getcwd() 函數中的單字節緩衝區溢出。 該問題是由自 1995 年以來一直存在的錯誤引起的。要調用溢出,在單獨的掛載點命名空間中,只需在“/”目錄上調用 chdir()。

終於 如果您有興趣了解更多信息, 您可以在中查看詳細信息 以下鏈接。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。