Glibc 2.30 系統庫發布

經過六個月的開發 發表 系統庫發布 GNU C 庫 (glibc) 2.30,完全符合ISO C11和POSIX.1-2008標準的要求。 新版本包含 48 名開發人員的修復。

來自 Glibc 2.30 中實現的 改進 你可以注意:

  • 動態連結器提供對「--preload」選項的支持,用於預先載入共享物件(類似於 LD_PRELOAD 環境變數);
  • 新增了 twalk_r 函數,類似於已經存在的 twalk 函數,但允許您將附加參數傳遞給給定的回調函數;
  • Linux 新增函數 getdents64、gettid 和 tgkill;
  • 確保當總物件大小超過 PTRDIFF_MAX 值時,記憶體管理函數 malloc、calloc、realloc、reallocarray、valloc、pvalloc、memalign 和 posix_memalign 會退出並顯示錯誤代碼。 當指標操作的結果導致 ptrdiff_t 類型溢出時,此變更可以避免未定義的行為;
  • 新增了 POSIX 函數 pthread_cond_clockwait、pthread_mutex_clocklock、
    pthread_rwlock_clockrdlock、pthread_rwlock_clockwrlock 和 sem_clockwait,類似「定時」等價物,但另外接受一個clockid_t參數來選擇計時器;

  • 編碼資料、字元類型資訊和音譯表已更新,以支援 Unicode 12.1.0 規範;
  • librt函式庫不再為新應用程式提供clock_gettime、clock_getres、clock_settime、clock_getcpuclockid和clock_nanosleep函數,而是自動使用libc中的定義;
  • “inet6”選項已從 /etc/resolv.conf 中刪除。 從 resolv.h 中刪除了過時的標誌 RES_USE_INET6、RES_INSECURE1 和 RES_INSECURE2;
  • 當指定「--enable-bind-now」選項時,已安裝的程式現在使用 BIND_NOW 標誌進行綁定;
  • Linux 特有的 sys/sysctl.h 頭檔和 sysctl 函數已被棄用,應用程式應使用 /proc 偽 FS 取代;
  • 建置 Glibc 現在需要 GCC 6.2 或更高版本(任何編譯器都可以用於建置應用程式);
  • 漏洞已修復 CVE-2019,7309 在 memcmp 函數的實作中 過時的 x32 子體系結構(不要與 x86 IA-32 混淆),因此該函數可能會錯誤地為不匹配的字串傳回值 0;
  • 漏洞已修復 CVE-2019,9169,這可能會導致在處理某些正規表示式時從緩衝區邊界之外的區域讀取資料。

來源: opennet.ru

添加評論