Uscita della libreria di sistema Glibc 2.34

Dopo sei mesi di sviluppo, è stata pubblicata la versione della libreria di sistema GNU C Library (glibc) 2.34, che soddisfa completamente i requisiti degli standard ISO C11 e POSIX.1-2017. La nuova versione include correzioni da 66 sviluppatori.

Tra i miglioramenti realizzati in Glibc 2.34, si possono evidenziare:

  • Le librerie libpthread, libdl, libutil e libanl sono state integrate nel core della libc, il cui utilizzo nelle applicazioni non richiede più il collegamento tramite i flag -lpthread, -ldl, -lutil e -lanl. È stata avviata la preparazione all'integrazione di libresolv nella libc. Questa integrazione permetterà di ottenere un processo di aggiornamento di glibc più coerente e semplificherà l'implementazione del runtime. Per garantire la retrocompatibilità con le applicazioni compilate con versioni precedenti di glibc, sono state fornite librerie di sostituzione. A causa dell'espansione del numero di strutture e funzioni fornite in glibc, non è esclusa l'insorgenza di problemi nelle applicazioni in cui si verifica un conflitto di nomi con librerie precedentemente non utilizzate come libpthread, libdl, libutil, libresolv e libanl.
  • È stata fornita la possibilità di utilizzare il tipo time_t a 64 bit in configurazioni in cui tradizionalmente è stato utilizzato il tipo time_t a 32 bit. In tali configurazioni, ad esempio, sui sistemi x86, resta per ora il time_t a 32 bit di default, ma questo comportamento può ora essere modificato tramite il macro "_TIME_BITS". Questa possibilità è disponibile solo su sistemi con kernel Linux di almeno versione 5.1.
  • È stata aggiunta la funzione _Fork, che sostituisce la funzione fork e soddisfa i requisiti di "async-signal-safe", ovvero consente chiamate sicure da gestori di segnali. Durante l'esecuzione di _Fork, viene creato un ambiente minimo sufficiente per chiamare funzioni nei gestori di segnali, come raise ed execve, senza coinvolgere funzionalità che potrebbero modificare i blocchi o lo stato interno. La chiamata a _Fork sarà definita in una futura versione dello standard POSIX, ma è attualmente inclusa tra le estensioni GNU.
  • Per la piattaforma Linux è stata implementata la funzione execveat, che consente l'esecuzione di un file eseguibile da un descrittore di file aperto. La nuova funzione viene anche utilizzata nell'implementazione della chiamata fexecve, che non richiede la presenza di un filesystem pseudo-montato /proc durante l'esecuzione.
  • È stata aggiunta la funzione timespec_getres, definita nella bozza dello standard ISO C2X, che amplia la funzione timespec_get con capacità simili alla funzione POSIX clock_getres.
  • È stata aggiunta la funzione close_range(), che consente a un processo di chiudere in un'unica operazione un intervallo di descrittori di file aperti. La funzione è disponibile sui sistemi con kernel Linux, almeno dalla versione 5.9.
  • Sono state aggiunte le funzioni closefrom e posix_spawn_file_actions_addclosefrom_np, che consentono di chiudere in un'unica operazione tutti i descrittori di file il cui numero è maggiore o uguale al valore specificato.
  • Nei modi «_DYNAMIC_STACK_SIZE_SOURCE» e «_GNU_SOURCE», i valori PTHREAD_STACK_MIN, MINSIGSTKSZ e SIGSTKSZ non sono più costanti, il che consente di supportare set di registri di dimensioni dinamiche, ad esempio, forniti dall'estensione ARM SVE.
  • Nel linker è stata implementata l'opzione «—list-diagnostics» per visualizzare informazioni relative alle operazioni di definizione IFUNC (funzione indiretta) e selezione del sotto-directory glibc-hwcaps.
  • È stato implementato il macro __STDC_WANT_IEC_60559_EXT__, destinato a verificare l'esistenza di funzioni definite nell'applicazione «F» della specifica ISO C2X.
  • Per i sistemi powerpc64* è stata implementata l'opzione «—disable-scv», che consente di compilare glibc senza supporto per l'istruzione scv.
  • Nel file gconv-modules è stato lasciato solo il set minimo di moduli gconv, mentre gli altri sono stati spostati in un file aggiuntivo gconv-modules-extra.conf, situato nella directory gconv-modules.d.
  • Per la piattaforma Linux è stato implementato il parametro glibc.pthread.stack_cache_size, che può essere utilizzato per configurare la dimensione della cache dello stack pthread.
  • È stata dichiarata obsoleta la funzione inet_neta dal file di intestazione , così come varie funzioni poco utilizzate da (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_ston) e (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Si raccomanda di utilizzare librerie separate per la gestione del DNS al posto di queste funzioni.
  • Sono state dichiarate obsolete le funzioni pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np e pthread_yield, mentre si raccomanda di utilizzare pthread_mutex_consistent, thread_mutexattr_getrobust, thread_mutexattr_setrobust e sched_yield.
  • È stata interrotta l'uso dei collegamenti simbolici per l'associazione degli oggetti condivisi installati con la versione di Glibc. Oggetti simili sono ora installati così come sono (ad esempio, libc.so.6 è ora un file e non un collegamento a libc-2.34.so).
  • Per impostazione predefinita, sono disabilitate le funzionalità di debug in malloc, come MALLOC_CHECK_ (glibc.malloc.check), mtrace() e mcheck(), che sono state spostate in una libreria separata libc_malloc_debug.so, dove sono stati trasferiti anche le funzioni obsoleti malloc_get_state e malloc_set_state.
  • Su Linux, per far funzionare funzioni come shm_open e sem_open, è ora richiesta la presenza del dispositivo /dev/shm.
  • Sono state risolte le vulnerabilità:
    • CVE-2021-27645: crash del processo nscd (nameserver caching daemon) a causa della chiamata doppia della funzione free durante l'elaborazione di richieste netgroup appositamente formattate.
    • CVE-2021-33574: accesso a un'area di memoria già liberata (use-after-free) nella funzione mq_notify quando si utilizza il tipo di notifica SIGEV_THREAD con l'attributo thread a cui è stata impostata una maschera di affinità CPU alternativa. Il problema può causare un crash, ma non si escludono altre possibilità di attacco.
    • CVE-2021-35942: un overflow della dimensione del parametro nella funzione wordexp può portare a un crash dell'applicazione.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster