Dopo sei mesi di sviluppo rilascio della libreria di sistema (glibc) , che soddisfa completamente i requisiti degli standard ISO C11 e POSIX.1-2008. La nuova versione include correzioni da 48 sviluppatori.
Tra le implementazioni in Glibc 2.30 si possono notare:
- Nel linker dinamico è stata introdotta la supporto per l'opzione «—preload» per il pre-caricamento di oggetti condivisi (analogo alla variabile ambiente LD_PRELOAD);
- È stata aggiunta la funzione twalk_r, simile alla funzione twalk esistente, ma che consente di passare un argomento aggiuntivo alla callback specificata;
- Per Linux sono state aggiunte nuove funzioni getdents64, gettid e tgkill;
- È stata garantita la terminazione con codice errore delle funzioni di gestione della memoria malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign e posix_memalign, nel caso in cui la dimensione totale dell'oggetto superi il valore PTRDIFF_MAX. Questa modifica permette di evitare comportamenti indefiniti quando il risultato della manipolazione dei puntatori porta a overflow del tipo ptrdiff_t;
- Sono state aggiunte le funzioni proposte in POSIX pthread_cond_clockwait, pthread_mutex_clocklock,
pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock e sem_clockwait, simili agli equivalenti «timed», ma che accettano anche un parametro clockid_t per scegliere il timer; - I dati di codifica, le informazioni sui tipi di caratteri e le tabelle di traslitterazione sono stati aggiornati per supportare la specifica Unicode 12.1.0;
- Nella libreria librt non sono più disponibili le funzioni clock_gettime, clock_getres, clock_settime, clock_getcpuclockid e clock_nanosleep per nuove applicazioni, per le quali vengono utilizzate automaticamente le definizioni in libc;
- Nel file /etc/resolv.conf è stata rimossa la supporto per l'opzione «inet6». Sono stati eliminati i flag obsoleti RES_USE_INET6, RES_INSECURE1 e RES_INSECURE2 da resolv.h;
- Specificando l'opzione «—enable-bind-now», i programmi installati ora si legano utilizzando il flag BIND_NOW;
- Il file di intestazione sys/sysctl.h specifico per Linux e la funzione sysctl sono stati dichiarati obsoleti, e le applicazioni dovrebbero invece utilizzare il pseudo-FS /proc;
- Per compilare Glibc è ora richiesta una versione di GCC 6.2 o più recente (possono essere utilizzati qualsiasi compilatori per la compilazione delle applicazioni);
- Vulnerabilità risolta nell'implementazione della funzione memcmp per sottoarchitettura x32 (non confondere con x86 IA-32), che ha portato la funzione a restituire in modo errato il valore 0 per stringhe non corrispondenti;
- Vulnerabilità risolta , che può portare alla lettura di dati da un'area al di fuori dei confini del buffer durante l'elaborazione di determinate espressioni regolari.
Fonte: opennet.ru
