Versión da biblioteca do sistema Glibc 2.34

Despois de seis meses de desenvolvemento, lanzouse a biblioteca do sistema GNU C Library (glibc) 2.34, que cumpre totalmente cos requisitos dos estándares ISO C11 e POSIX.1-2017. A nova versión inclúe correccións de 66 desenvolvedores.

Algunhas das melloras implementadas en Glibc 2.34 inclúen:

  • As bibliotecas libpthread, libdl, libutil e libanl están integradas na estrutura principal de libc, o uso da súa funcionalidade en aplicacións xa non require a ligazón usando as marcas -lpthread, -ldl, -lutil e -lanl. Fixéronse os preparativos para a integración de libresolv en libc. A integración permitirá un proceso de actualización de glibc máis fluido e simplificará a implementación do tempo de execución. Ofrécense bibliotecas de stub para ofrecer compatibilidade con aplicacións creadas con versións antigas de glibc. Debido á ampliación do número de estruturas e funcións proporcionadas na glibc, poden xurdir problemas nas aplicacións nas que hai unha intersección de nomes con bibliotecas non utilizadas anteriormente libpthread, libdl, libutil, libresolv e libanl.
  • Ofrece a posibilidade de usar un tipo time_t de 64 bits en configuracións que tradicionalmente usaban un tipo time_t de 32 bits. Nestas configuracións, por exemplo en sistemas x86, o valor predeterminado aínda é time_t de 32 bits, pero agora pódese cambiar este comportamento mediante a macro "_TIME_BITS". Esta función só está dispoñible en sistemas con polo menos a versión 5.1 do núcleo de Linux.
  • Engadida a función _Fork, un substituto para a función fork que cumpre os requisitos de "async-signal-safe", é dicir. permitindo chamadas seguras dos controladores de sinal. Durante a execución de _Fork, créase un ambiente mínimo que é suficiente para chamar a funcións dos controladores de sinal como raise e execve sen implicar funcións que poidan cambiar bloqueos ou estado interno. A chamada _Fork definirase nunha versión futura do estándar POSIX, pero polo de agora inclúese como extensión GNU.
  • Para a plataforma Linux, implementouse a función execveat, que permite executar un ficheiro executable desde un descritor de ficheiro aberto. A nova función tamén se usa na implementación da chamada fexecve, que non require un pseudo-FS /proc montado no inicio.
  • Engadida a función timespec_getres, definida no borrador do estándar ISO C2X, que amplía a función timespec_get con capacidades similares á función clock_getres de POSIX.
  • Engadiuse a función close_range(), que permite que un proceso peche todo un rango de descritores de ficheiros abertos á vez. A función está dispoñible en sistemas cun núcleo Linux de polo menos a versión 5.9.
  • Engadíronse funcións closefrom e posix_spawn_file_actions_addclosefrom_np, que lle permiten pechar todos os descritores de ficheiros á vez, cuxo número é maior ou igual ao valor especificado.
  • Nos modos "_DYNAMIC_STACK_SIZE_SOURCE" e "_GNU_SOURCE", PTHREAD_STACK_MIN, MINSIGSTKSZ e SIGSTKSZ xa non son constantes, o que permite compatibilidade con conxuntos de rexistros de tamaño dinámico, como os proporcionados na extensión ARM SVE.
  • O enlazador implementa a opción "--list-diagnostics" para mostrar información relacionada coas operacións de definición de IFUNC (función indirecta) e a selección do subdirectorio glibc-hwcaps.
  • Implementouse a macro __STDC_WANT_IEC_60559_EXT__, deseñada para comprobar a presenza das funcións definidas no anexo F da especificación ISO C2X.
  • Para os sistemas powerpc64*, implementouse a opción "--disable-scv", que lle permite construír glibc sen soportar a instrución scv.
  • Só queda o conxunto mínimo de módulos gconv básicos no ficheiro gconv-modules, e o resto móvese a un ficheiro adicional gconv-modules-extra.conf, situado no directorio gconv-modules.d.
  • Para a plataforma Linux, está implementado o parámetro glibc.pthread.stack_cache_size, que se pode usar para configurar o tamaño da caché da pila de pthread.
  • A función inet_neta do ficheiro de cabeceira quedou en desuso , así como varias funcións raramente usadas de (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, put_type_server, res_long, put_type_server, res_long ry, res_queriesmatch, res_randomid, sym_ntop , sym_ntos, sym_ston) e (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). En lugar destas funcións, recoméndase utilizar bibliotecas separadas para traballar con DNS.
  • As funcións pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np e pthread_yield quedaron en desuso e deberían utilizarse pthread_mutex_consistent, thread_mutexattr_getrobust, hread_mutexattr_setrobust e no seu lugar.
  • Deixou de usar ligazóns simbólicas para vincular obxectos compartidos instalados á versión de Glibc. Estes obxectos están agora instalados tal e como están (por exemplo, libc.so.6 agora é un ficheiro e non unha ligazón a libc-2.34.so).
  • Por defecto, as funcións de depuración en malloc están desactivadas, como MALLOC_CHECK_ (glibc.malloc.check), mtrace() e mcheck(), que se moven a unha biblioteca separada libc_malloc_debug.so, na que tamén teñen as funcións obsoletas malloc_get_state e malloc_set_state. foi movido.
  • En Linux, funcións como shm_open e sem_open agora requiren que o dispositivo /dev/shm funcione.
  • Vulnerabilidades corrixidas:
    • CVE-2021-27645: o proceso nscd (demonio de caché do servidor de nomes) falla debido a unha dobre chamada á función gratuíta ao procesar solicitudes de grupos de rede especialmente creadas.
    • CVE-2021-33574: acceso a unha área de memoria xa liberada (use-after-free) na función mq_notify cando se utiliza o tipo de notificación SIGEV_THREAD cun atributo de fío para o que se define unha máscara de afinidade da CPU alternativa. O problema pode provocar un fallo, pero non se poden descartar outras opcións de ataque.
    • CVE-2021-35942: un desbordamento de tamaño de parámetro na función wordexp pode provocar que a aplicación falle.

Fonte: opennet.ru

Engadir un comentario