Uscita della libreria di sistema Glibc 2.42 e del pacchetto di utilità GNU Binutils 2.45

Dopo sei mesi di sviluppo è stata pubblicata la release della libreria di sistema GNU C Library 2.42 (glibc), che segue completamente i requisiti degli standard ISO C23 e POSIX.1-2024. Il nuovo rilascio è stato realizzato con la partecipazione di 70 sviluppatori.

Tra i miglioramenti implementati in Glibc 2.42, si possono notare:

  • Nella funzione pthread_create è stato aggiunto il supporto per le pagine di guardia leggere per la protezione dello stack (stack guard page), il cui accesso genera un'eccezione e termina il processo (SIGSEGV). L'implementazione si basa sul flag MADV_GUARD_INSTALL, introdotto nella chiamata di sistema madvise, supportato a partire dal kernel Linux 6.13. Rispetto alla mappatura in modalità PROT_NONE, le pagine di guardia consentono di bloccare in modo più efficace l'esecuzione di codice al di fuori dell'area di memoria allocata, poiché la loro creazione non richiede l'allocazione di una nuova area di memoria virtuale.
  • Sono state aggiunte e sono riportate nel file di intestazione math.h nuove funzioni per l'elevamento a potenza e il calcolo delle radici compoundn, pown e powr, rootn e rsqrt, definite nello standard ISO C23. Le varianti delle funzioni sono state implementate per i tipi float, double, long double, _FloatN e _FloatNx, nonché per il tipo generico presente in tgmath.h.
  • Sulla piattaforma Linux è stata implementata la funzione pthread_gettid_np, che, come la funzione gettid(), restituisce un identificatore unico del thread, ma si distingue per un controllo degli errori più dettagliato (in caso di comportamento indefinito, il processo termina).
  • Sono state aggiunte funzioni per il calcolo dei valori assoluti, funzionanti con tipi non firmati: uabs, ulabs, ullabs e uimaxabs. Queste funzioni entreranno a far parte del futuro standard C.
  • Sulla piattaforma Linux, nell'interfaccia programmativa termios.h è stato implementato il supporto per valori di velocità di trasmissione arbitrari. Il tipo speed_t è stato ridefinito e ora corrisponde al tipo «unsigned int», come nel kernel Linux.
  • Nel cache locale per thread (tcache), utilizzato nella funzione malloc, è stato aggiunto il supporto per la cache di grandi blocchi di memoria. La dimensione massima del blocco può essere ridefinita tramite l'impostazione glibc.malloc.tcache_max, che può accettare valori fino a 4194304. È stata accelerata l'operatività della cache per blocchi di piccole dimensioni.
  • Nello script di assemblaggio configure è stata aggiunta l'opzione «—enable-sframe», che attiva il supporto per il formato SFrame, utilizzato per rappresentare le informazioni sul tracciamento dello stack e supportato dalla funzione backtrace. Per utilizzare SFrame è richiesta almeno la versione binutils 2.45.
  • Dal progetto CORE-MATH sono stati trasferiti i versioni ottimizzate delle funzioni matematiche acospif, asinpif, atanpif, atan2pif, cospif, sinpif e tanpif.
  • È stato notevolmente ampliato il set di test, che ora copre il funzionamento di diverse varianti delle famiglie di funzioni printf e scanf.
  • Aggiunto codice per identificare i processori Intel basati sulle microarchitetture Arrow Lake, Panther Lake, Clearwater Forest e Diamond Rapids.
  • Aggiunto supporto per la piattaforma z17 (nuova generazione di mainframe IBM Z/S390).
  • Nella configurazione glibc.rtld.execstack è stato aggiunto il supporto per la modalità di compatibilità per le applicazioni che richiedono uno stack eseguibile tramite librerie caricate dinamicamente.
  • Rimossi il file di intestazione termio.h e la definizione della struttura termio da sys/ioctl.h. L'interfaccia del programma termio.h è stata dichiarata obsoleta già in POSIX.1 (1988) ed è stata sostituita con termios.h.
  • Per compilare Glibc ora sono richiesti almeno i rilasci GCC 12.1 e GNU Binutils 2.39.
  • Sono state risolte le vulnerabilità:
    • CVE-2025-0395 — overflow del buffer durante l'esecuzione della funzione assert(). L'overflow si verifica quando viene fornito un nome di programma troppo lungo (argv[0]). Il problema è considerato non pericoloso, poiché fuori dal buffer vengono scritti 4 byte, il cui contenuto non può essere controllato dall'attaccante. È interessante osservare la presenza nella funzione di debug di una vulnerabilità derivante da un errore nell'output del nome dell'applicazione corrente.
    • CVE-2025-5702, CVE-2025-5745 — vulnerabilità nell'implementazione delle funzioni strcmp e strncmp per processori Power10, che portano a un crash durante il salvataggio e il ripristino dei registri vettoriali v20-v31, che devono essere salvati tra le chiamate delle funzioni. La vulnerabilità può essere utilizzata per sovrascrivere o determinare il contenuto dei dati dei registri utilizzati dalla funzione arc.
    • CVE-2025-8058 — vulnerabilità nella funzione regcomp, che porta a un doppio rilascio di memoria (double-free).

Inoltre, si segnala il rilascio della collezione di utilità di sistema GNU Binutils 2.45, che comprende programmi come GNU linker, GNU assembler, nm, objdump, strings, strip.

Nella nuova versione di Binutils:

  • In GNU assembler:
    • È stato aggiunto il supporto per le ultime estensioni delle architetture RISC-V, LoongArch e AArch64. Per x86 è stato aggiunto il supporto per le istruzioni XMODX, implementate nei processori Zhaoxin PadLock. Per RISC-V è stato aggiunto il supporto per le istruzioni ssqosid v1.0, ssnpm v1.0, smnpm v1.0, smmpm v1.0, sspm v1.0, supm v1.0, sha v1.0, zce v1.0, smcdeleg v1.0, ssccfg v1.0, svvptc v1.0, zilsd v1.0, zclsd v1.0, smrnmi v1.0, xtheadvdot v1.0, xmipscbop v1.0, xmipscmov v1.0, xmipsexectl v1.0 e xmipslsp v1.0.
    • È stata garantita la compatibilità nella generazione dei dati nel formato SFrame con la specifica SFrame V2. È stato aggiunto il supporto per la generazione di informazioni sul tracciamento dello stack (.sframe) da direttive CFI nei sistemi a 64 bit s390 (s390x).
    • È stato aggiunto il supporto per le direttive .errif e .warnif per l'output di messaggi diagnostici al verificarsi di determinate condizioni.
  • Nel linker, nell'opzione "—stats" è stato implementato il supporto per un argomento opzionale, attraverso il quale è possibile specificare il nome del file per salvare le informazioni sul consumo di risorse in diverse fasi del linking. Il nome del file può essere specificato anche tramite la variabile ambiente LD_STATS. Per i sistemi RISC-V, è stato aggiunto al linker il supporto per i nuovi formati PLT (Procedure Linkage Table).
  • Sono stati apportati diversi miglioramenti legati al supporto del formato SFrame. Le funzioni per lavorare con SFrame sono state spostate in una libreria versionata libsframe.so.2.
  • Nel disassemblatore e nell'utility readelf è stato ampliato il supporto per l'architettura RISC-V.

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