Después de seis meses de desarrollo lanzamiento de la biblioteca del sistema (glibc) , que cumple completamente con los estándares ISO C11 y POSIX.1-2008. La nueva versión incluye correcciones de 48 desarrolladores.
De los implementados en Glibc 2.30 se pueden destacar:
- Se ha añadido soporte para la opción «—preload» en el enlazador dinámico para la precarga de objetos compartidos (análogo a la variable de entorno LD_PRELOAD);
- Se ha agregado la función twalk_r, similar a la función twalk existente, pero que permite pasar un argumento adicional a una función de callback especificada;
- Para Linux se han añadido nuevas funciones getdents64, gettid y tgkill;
- Se garantiza que las funciones de gestión de memoria malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign y posix_memalign finalizan con un código de error en situaciones en las que el tamaño total del objeto excede el valor PTRDIFF_MAX. Este cambio permite evitar un comportamiento indefinido cuando el resultado de las operaciones con punteros lleva a un desbordamiento del tipo ptrdiff_t;
- Se añadieron las funciones propuestas en POSIX pthread_cond_clockwait, pthread_mutex_clocklock,
pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock y sem_clockwait, similares a sus equivalentes «timed», pero que además aceptan el parámetro clockid_t para seleccionar un temporizador; - La información sobre codificaciones, tipos de caracteres y tablas de transliteración se ha actualizado para soportar la especificación Unicode 12.1.0;
- En la biblioteca librt, las funciones clock_gettime, clock_getres, clock_settime, clock_getcpuclockid y clock_nanosleep ya no se proporcionan para nuevas aplicaciones, siendo utilizadas automáticamente las definiciones en libc;
- En /etc/resolv.conf se ha dejado de dar soporte a la opción «inet6». Se han eliminado los flags obsoletos RES_USE_INET6, RES_INSECURE1 y RES_INSECURE2 de resolv.h;
- Al especificar la opción «—enable-bind-now», los programas instalados ahora se enlazan utilizando la bandera BIND_NOW;
- Se han declarado obsoletos el archivo de cabecera específico de Linux sys/sysctl.h y la función sysctl, y se recomienda a las aplicaciones utilizar el sistema de archivos pseudo /proc;
- Para construir Glibc ahora se requiere GCC 6.2 o una versión más nueva (cualquier compilador puede utilizarse para la construcción de aplicaciones);
- Se corrigió una vulnerabilidad en la implementación de la función memcmp para subarquitectura x32 (no confundir con x86 IA-32), lo que resultó en que la función pudiera devolver incorrectamente el valor 0 para cadenas que no coincidían;
- Se corrigió una vulnerabilidad , que puede llevar a la lectura de datos fuera de los límites del búfer al procesar ciertas expresiones regulares.
Fuente: opennet.ru
