Glibc 2.35 hadir dengan peningkatan, perbaikan bug, dan lainnya

Setelah enam bulan pengembangan rilis versi baru Glibc 2.35 diumumkan di mana termasuk perbaikan dari 66 pengembang dan dari peningkatan yang diterapkan, kami dapat menemukan bahwa dukungan untuk lokal "C.UTF-8" telah ditambahkan, yang mencakup susunan untuk semua kode Unicode, tetapi terbatas pada penggunaan rentang ASCII dalam fungsi fnmatch, regexec, dan regcomp untuk menyimpan ruang angkasa.

Lokalnya kira-kira 400 KB, 346 KB di antaranya adalah data LC_CTYPE untuk Unicode, dan harus diinstal secara terpisah (tidak dibangun ke dalam Glibc). Data pengkodean, informasi tipe karakter, dan tabel transliterasi telah diperbarui untuk mendukung spesifikasi Unicode 14.0.0.

Perubahan lain yang menonjol adalah itu kamu mengimplementasikan fungsi dan makro yang membulatkan hasil ke tipe yang lebih sempit, Selain mengimplementasikan fungsi dan makro untuk menemukan jumlah floating point minimum dan maksimum dari tipe float, long double, _FloatN dan _FloatNx, dijelaskan dalam spesifikasi IEEE 754-2019.

untuk fungsi exp10, makro yang sesuai ditambahkan ke file header, yang tidak terikat pada tipe tertentu, ditambah makro _PRINTF_NAN_LEN_MAX telah ditambahkan ke , diusulkan dalam draf standar ISO C2X.

Sistem penautan dinamis menerapkan algoritma klasifikasi baru DSO menggunakan pencarian mendalam (DFS) untuk mengatasi masalah kinerja saat menangani dependensi loop. Untuk memilih algoritme pengurutan DSO, parameter glibc.rtld.dynamic_sort diusulkan, yang dapat disetel ke "1" untuk kembali ke algoritme sebelumnya.

Selain itu menambahkan dukungan untuk fungsi baru '__memcmpeq' ke ABI, yang digunakan oleh kompiler untuk mengoptimalkan penggunaan `memcmp' ketika nilai kembalian dari fungsi ini hanya digunakan untuk memeriksa status penyelesaian suatu operasi.

Itu dukungan untuk pendaftaran utas otomatis menggunakan panggilan sistem rseq (urutan yang dapat dimulai ulang) yang disediakan sejak kernel Linux 4.18. Panggilan sistem rseq memungkinkan untuk mengatur eksekusi terus menerus dari sekelompok instruksi yang tidak terputus dan melakukan hasilnya dengan pernyataan terakhir dalam grup. Pada dasarnya, ia menyediakan fasilitas untuk eksekusi atom yang sangat cepat dari operasi yang, jika terganggu oleh utas lain, dibersihkan dan dicoba lagi.

Di sisi lain, ia menyediakan kompilasi default dari semua file yang dapat dieksekusi dari program built-in dan test suite dalam mode PIE (position-independent executable).

Untuk menonaktifkan perilaku ini, opsi “–disable-default-pie” disediakan, plus untuk Linux, menambahkan pengaturan glibc.malloc.hugetlb untuk mengubah implementasi malloc untuk menggunakan panggilan sistem madvise dengan flag MADV_HUGEPAGE untuk mmap dan sbrk, atau langsung menggunakan halaman memori besar dengan menentukan flag MAP_HUGETLB dalam panggilan mmap.

Dalam kasus pertama, peningkatan kinerja dapat dicapai dengan menggunakan Halaman Besar transparan dalam mode madvise, dan dalam kasus kedua, Anda dapat menggunakan halaman besar yang dicadangkan sistem (Halaman Besar).

Perlu juga dicatat bahwa beberapa kerentanan telah diperbaiki dalam versi baru ini:

  • CVE-2022-23218, CVE-2022-23219: Buffer overflow dalam fungsi svcunix_create dan clnt_create disebabkan oleh menyalin konten parameter nama file ke tumpukan tanpa memeriksa ukuran data yang disalin. Untuk aplikasi yang dibangun tanpa perlindungan tumpukan dan menggunakan protokol "unix", kerentanan dapat menyebabkan eksekusi kode berbahaya saat memproses nama file yang sangat panjang.
  • CVE-2021-3998: kerentanan dalam fungsi realpath() yang disebabkan oleh pengembalian nilai yang salah dalam kondisi tertentu yang berisi data sisa yang tidak bersih dari tumpukan. Untuk program fusermount root SUID, kerentanan dapat digunakan untuk memperoleh informasi sensitif dari memori proses, misalnya, untuk mendapatkan informasi penunjuk.
  • CVE-2021-3999: buffer overflow byte tunggal dalam fungsi getcwd(). Masalah ini disebabkan oleh bug yang sudah ada sejak 1995. Untuk memanggil overflow, di namespace titik mount terpisah, panggil saja chdir() pada direktori "/".

Akhirnya Jika Anda tertarik untuk mengetahui lebih banyak tentang itu, Anda dapat memeriksa detailnya di link berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.