Glibc 2.38 ya fue liberado y esas son sus novedades

Glibc

Glibc es la biblioteca de tiempo de ejecución estándar del lenguaje C de GNU

Después de seis meses de desarrollo se dio a conocer el lanzamiento de la nueva versión de Glibc 2.38, versión en la cual se han realizado diversos cambios, se han declarado y eliminado funciones obsoletas, se han integrado mejoras de seguridad y más.

Para quienes desconocen de Glibc, deben saber que es una biblioteca C de GNU, comúnmente conocida como glibc es la biblioteca de tiempo de ejecución estándar del lenguaje C de GNU. En los sistemas en los que se usa, esta biblioteca de C que proporciona y define las llamadas al sistema y otras funciones básicas, es utilizada por casi todos los programas. 

Principales novedades de Glibc 2.38

En esta nueva versión que se presenta de Glibc 2.38, una de sus principales novedades que se destaca, es que se agregaron las nuevas funciones strlcpy y strlcat, las cuales son alternativas a las funciones strncpy y strncat, que contienen protección contra desbordamiento de búfer y necesariamente configuran la cadena final en un byte nulo. La implementación de las funciones se ha realizado desde OpenBSD y se espera que estas funciones se incluyan en el estándar POSIX en el futuro.

Otra de las novedades que se destaca de esta nueva versión, cuando las características de C2X están habilitadas y el argumento base es 0 o 2, en los parámetros de entrada de diferentes funciones, permiten el uso de los prefijos 0b y 0B para definir valores binarios, al especificar el modo de formateo a través del especificador «%i. Independientemente de la activación del estándar C2X, estas funciones también admiten una opción de formato «%b» separada para números binarios.

Tambien se destaca que ahora, se puede utilizar la una nueva opción de configuración, «–enable-fortify-source«, para compilar Glibc con «_FORTIFY_SOURCE«, para detectar posibles desbordamientos de búfer durante la ejecución de funciones de cadena definidas en el archivo de encabezado string.h.

Ademas de ello, ahora las funciones de la familia Printf admiten los modificadores de longitud del formato «wN» para argumentos de tipo intN_t, int_leastN_t, uintN_t y uint_leastN_t y el formato «wfN» modificadores de longitud para argumentos de tipo int_fastN_t o uint_fastN_t, como especificado en el borrador ISO C2X.

Se corrigió la vulnerabilidad CVE-2023-25139, que provocaba un desbordamiento del búfer en las funciones de la familia printf al escribir en el búfer representaciones de cadenas de números con separadores de miles, si el tamaño del búfer se calcula sin delimitadores (por ejemplo, la salida 1,234,567 dará como resultado un desbordamiento de 2 bytes).

Por otra parte, se menciona que para la arquitectura AArch64 se ha agregado compatibilidad con la biblioteca matemática vectorial «libmvec«, la cual requiere la versión GCC >= 10.1.0. Se puede deshabilitar a través de «–disable-mathvec«, sin embargo, esa no es una configuración compatible, ya que cambia la ABI. Los nombres de los símbolos siguen el ABI del vector AArch64, se declaran en math.h y deben llamarse manualmente en este punto.

En cuanto a las funciones que se declararon obsoletas y que fueron eliminadas en esta nueva versión, se menciona por ejemplo que «ustat» ya no está disponible para los binarios recién vinculados y se han eliminado los encabezados <ustat.h> y <sys/ustat.h>. 

De forma predeterminada, libcrypt ya no se crea y ahora se recomienda usar la opción «–enable-crypt» para construir libcrypt. Es probable que libcrypt se elimine en una versión futura, por lo que se recomienda que las aplicaciones se transfieran a una alternativa como libxcrypt.

De los demás cambios que se destacan:

  • Se agregó la configuración glibc.pthread.stack_hugetlb para deshabilitar THP (Páginas enormes transparentes) para la asignación de pilas durante pthread_create.
  • Se agregó soporte para x86_64 ejecutándose en Hurd. Este port requiere como mínimo binutils 2.40 y GCC 13.
  • Se eliminaron las opciones «–disable-experimental-malloc» y «–enable-tunables» ( la configuración interna ahora está siempre habilitada).
  • Las macros PRIb*, PRIB* y SCNb* de C2X se han agregado al encabezado <inttypes.h>.
  • En el kernel de Linux para la arquitectura hppa/parisc, algunas de las constantes MADV_XXX se cambiaron para tener los mismos valores que las otras arquitecturas.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.