Dopo sei mesi di sviluppo rilascio della libreria di sistema (glibc) , che segue 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 evidenziare:
- Nel linker dinamico è stato implementato il supporto per l'opzione «—preload» per il pre-caricamento di oggetti condivisi (simile alla variabile d'ambiente LD_PRELOAD);
- È stata aggiunta la funzione twalk_r, simile alla funzione twalk esistente, ma che consente di passare un argomento aggiuntivo alla funzione di callback specificata;
- Per Linux sono state aggiunte nuove funzioni getdents64, gettid e tgkill;
- È stata garantita l'uscita con codice di errore delle funzioni di gestione della memoria malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign e posix_memalign, in situazioni in cui la dimensione totale dell'oggetto supera il valore di PTRDIFF_MAX. Questa modifica consente di evitare comportamenti indesiderati quando il risultato della manipolazione dei puntatori porta a un 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 la scelta del timer; - Le informazioni sulle codifiche, i tipi di caratteri e le tabelle di traslitterazione sono state aggiornate per supportare la specifica Unicode 12.1.0;
- Nella libreria librt, le funzioni clock_gettime, clock_getres, clock_settime, clock_getcpuclockid e clock_nanosleep non vengono più fornite per le nuove applicazioni, utilizzando invece automaticamente le definizioni in libc;
- Il supporto per l'opzione «inet6» è stato interrotto in /etc/resolv.conf. I flag obsoleti RES_USE_INET6, RES_INSECURE1 e RES_INSECURE2 sono stati rimossi da resolv.h;
- Quando si specifica l'opzione «--enable-bind-now», i programmi installati ora si collegano utilizzando il flag BIND_NOW;
- Il file di intestazione specifico per Linux sys/sysctl.h e la funzione sysctl sono stati dichiarati obsoleti, e gli sviluppatori sono incoraggiati a utilizzare il pseudo-FS /proc;
- Per compilare Glibc è necessaria una versione di GCC 6.2 o superiore (possono essere utilizzati qualsiasi compilatore per la compilazione delle applicazioni);
- Risolta la vulnerabilità nell'implementazione della funzione memcmp per la sottarchitettura x32 (non confonderla con x86 IA-32), che poteva restituire in modo errato il valore 0 per stringhe non corrispondenti;
- Risolta la vulnerabilità , che può portare alla lettura di dati al di fuori dei confini del buffer durante l'elaborazione di determinate espressioni regolari.
Fonte: opennet.ru
