Glibc 2.34 System Library Release

Pagkatapos ng anim na buwan ng pag-develop, ang GNU C Library (glibc) 2.34 system library ay inilabas, na ganap na sumusunod sa mga kinakailangan ng ISO C11 at POSIX.1-2017 na pamantayan. Kasama sa bagong release ang mga pag-aayos mula sa 66 na developer.

Ang ilan sa mga pagpapahusay na ipinatupad sa Glibc 2.34 ay kinabibilangan ng:

  • Ang libpthread, libdl, libutil at libanl na mga aklatan ay isinama sa pangunahing istraktura ng libc, ang paggamit ng kanilang functionality sa mga application ay hindi na nangangailangan ng pag-link gamit ang -lpthread, -ldl, -lutil at -lanl na mga flag. Ang mga paghahanda ay ginawa para sa pagsasama ng libresolv sa libc. Ang pagsasama ay magbibigay-daan para sa isang mas tuluy-tuloy na proseso ng pag-update ng glibc at magpapasimple sa pagpapatupad ng runtime. Ang mga stub library ay ibinibigay upang magbigay ng backward compatibility sa mga application na binuo gamit ang mga mas lumang bersyon ng glibc. Dahil sa pagpapalawak ng bilang ng mga istruktura at pag-andar na ibinigay sa glibc, maaaring lumitaw ang mga problema sa mga aplikasyon kung saan mayroong intersection ng mga pangalan sa mga dati nang hindi nagamit na mga aklatan na libpthread, libdl, libutil, libresolv at libanl.
  • Nagbibigay ng kakayahang gumamit ng 64-bit na time_t type sa mga configuration na tradisyonal na gumamit ng 32-bit time_t type. Sa ganitong mga pagsasaayos, halimbawa sa mga x86 system, ang default ay 32-bit time_t pa rin, ngunit ang gawi na ito ay maaari na ngayong baguhin gamit ang "_TIME_BITS" macro. Ang tampok na ito ay magagamit lamang sa mga system na may hindi bababa sa bersyon ng Linux kernel 5.1.
  • Idinagdag ang _Fork function, isang kapalit para sa fork function na nakakatugon sa mga kinakailangan ng "async-signal-safe", i.e. nagbibigay-daan sa ligtas na pagtawag mula sa mga humahawak ng signal. Sa panahon ng pagpapatupad ng _Fork, ang isang minimal na kapaligiran ay nilikha na sapat upang tawagan ang mga function sa mga humahawak ng signal tulad ng pagtaas at pagpapatakbo nang hindi kinasasangkutan ng mga tampok na maaaring magbago ng mga lock o panloob na estado. Ang _Fork na tawag ay tutukuyin sa isang hinaharap na bersyon ng pamantayan ng POSIX, ngunit sa ngayon ay kasama ito bilang isang extension ng GNU.
  • Para sa Linux platform, ang execveat function ay ipinatupad, na nagbibigay-daan sa iyong magpatakbo ng isang executable file mula sa isang open file descriptor. Ginagamit din ang bagong function sa pagpapatupad ng fexecve call, na hindi nangangailangan ng naka-mount na pseudo-FS /proc sa startup.
  • Idinagdag ang timespec_getres function, na tinukoy sa draft na ISO C2X standard, na nagpapalawak sa timespec_get function na may mga kakayahan na katulad ng POSIX clock_getres function.
  • Nagdagdag ng function na close_range(), na nagpapahintulot sa isang proseso na isara ang isang buong hanay ng mga open file descriptor nang sabay-sabay. Available ang function sa mga system na may Linux kernel na hindi bababa sa bersyon 5.9.
  • Nagdagdag ng mga function na closefrom at posix_spawn_file_actions_addclosefrom_np, na nagbibigay-daan sa iyong isara ang lahat ng mga descriptor ng file nang sabay-sabay, ang bilang nito ay mas malaki kaysa o katumbas ng tinukoy na halaga.
  • Sa "_DYNAMIC_STACK_SIZE_SOURCE" at "_GNU_SOURCE" na mga mode, ang PTHREAD_STACK_MIN, MINSIGSTKSZ, at SIGSTKSZ ay hindi na pare-pareho, na nagbibigay-daan sa suporta para sa dynamic na laki ng mga set ng rehistro tulad ng ibinigay sa extension ng ARM SVE.
  • Ipinapatupad ng linker ang opsyong "--list-diagnostics" upang ipakita ang impormasyong nauugnay sa mga pagpapatakbo ng kahulugan ng IFUNC (indirect function) at pagpili ng subdirectory ng glibc-hwcaps.
  • Ang macro __STDC_WANT_IEC_60559_EXT__ ay ipinatupad, na idinisenyo upang suriin ang pagkakaroon ng mga function na tinukoy sa Annex F ng detalye ng ISO C2X.
  • Para sa mga powerpc64* system, ang opsyong "--disable-scv" ay ipinatupad, na nagbibigay-daan sa iyong bumuo ng glibc nang hindi sinusuportahan ang pagtuturo ng scv.
  • Tanging ang minimum na hanay ng mga core gconv modules ang natitira sa gconv-modules file, at ang iba ay ililipat sa isang karagdagang file na gconv-modules-extra.conf, na matatagpuan sa gconv-modules.d directory.
  • Para sa platform ng Linux, ipinapatupad ang glibc.pthread.stack_cache_size na parameter, na magagamit upang i-configure ang laki ng pthread stack cache.
  • Hindi na ginagamit ang inet_neta function mula sa header file, pati na rin ang iba't ibang bihirang ginagamit na function mula sa (dn_count_labels, fp_nquery, fp_query, fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdname, p_cdnname, p_class p_fqname, p_fqnname, p_option, p_query, p_rcode, p_time, p_type, putlong, putshort, res_hostalias, res_isourserver, res_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntos, sym_sourserver, res_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntos, sym_nsl_namesto, sym_s_nst_namesto, sym_sn_n_namesto, sym_n_to_n, sym_n_to_n, sym_n_tos, sym_n_to_n_to_n, sym_tos, sym_n_n_to_n ns_makecanon, ns _parse_ttl, ns_samedomain , ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Sa halip na mga function na ito, inirerekumenda na gumamit ng hiwalay na mga aklatan para sa pagtatrabaho sa DNS.
  • Ang mga function na pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np at pthread_yield ay hindi na ginagamit at pthread_mutex_consistent, thread_mutexattr_getrobust, hread_mutexattr_sched_setrobust at dapat na sched_setrobust.
  • Huminto sa paggamit ng mga simbolikong link upang itali ang mga naka-install na nakabahaging bagay sa bersyon ng Glibc. Ang mga naturang bagay ay naka-install na ngayon bilang ay (hal. libc.so.6 ay isa na ngayong file sa halip na isang link sa libc-2.34.so).
  • Bilang default, hindi pinagana ang mga feature sa pag-debug sa malloc, gaya ng MALLOC_CHECK_ (glibc.malloc.check), mtrace() at mcheck(), na inilipat sa isang hiwalay na library libc_malloc_debug.so, kung saan mayroon din ang mga hindi na ginagamit na function na malloc_get_state at malloc_set_state inilipat.
  • Sa Linux, kailangan na ng mga function tulad ng shm_open at sem_open na gumana ang /dev/shm device.
  • Naayos ang mga kahinaan:
    • CVE-2021-27645: Nag-crash ang proseso ng nscd (nameserver caching daemon) dahil sa dobleng tawag sa libreng function kapag pinoproseso ang mga espesyal na ginawang kahilingan sa netgroup.
    • CVE-2021-33574: Pag-access sa isang nabakanteng lugar ng memorya (use-after-free) sa function na mq_notify kapag ginagamit ang uri ng notification ng SIGEV_THREAD na may katangian ng thread kung saan nakatakda ang alternatibong CPU affinity mask. Ang problema ay maaaring humantong sa isang pag-crash, ngunit ang iba pang mga pagpipilian sa pag-atake ay hindi maaaring pinasiyahan.
    • CVE-2021-35942: Ang laki ng parameter na overflow sa wordexp function ay maaaring maging sanhi ng pag-crash ng application.

Pinagmulan: opennet.ru

Magdagdag ng komento