Après six mois de développement publication de la bibliothèque système (glibc) , qui respecte entièrement les exigences des normes ISO C11 et POSIX.1-2008. La nouvelle version comprend des correctifs de 48 développeurs.
Parmi les fonctionnalités mises en œuvre dans Glibc 2.30 on peut noter :
- Le connecteur dynamique prend en charge l'option « —preload » pour précharger des objets partagés (similaire à la variable d'environnement LD_PRELOAD);
- Ajoutée la fonction twalk_r, similaire à la fonction déjà existante twalk, mais permettant de passer un argument supplémentaire à la fonction de rappel spécifiée;
- Pour Linux, de nouvelles fonctions getdents64, gettid et tgkill ont été ajoutées;
- La terminaison des fonctions de gestion de la mémoire malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign et posix_memalign renvoie maintenant un code d'erreur lorsque la taille totale de l'objet dépasse PTRDIFF_MAX. Ce changement permet d'éviter un comportement indéfini lorsque le résultat des manipulations de pointeurs entraîne un dépassement de type ptrdiff_t;
- Ajoutées les fonctions POSIX suggérées pthread_cond_clockwait, pthread_mutex_clocklock,
pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock et sem_clockwait, similaires aux équivalents « timed », mais acceptant en plus un paramètre clockid_t pour sélectionner le minuteur; - Les données d'encodage, les informations sur les types de caractères et les tables de translittération ont été mises à jour pour prendre en charge la spécification Unicode 12.1.0;
- Dans la bibliothèque librt, les fonctions clock_gettime, clock_getres, clock_settime, clock_getcpuclockid et clock_nanosleep ne sont plus fournies pour les nouvelles applications, et les définitions de libc sont utilisées automatiquement à la place;
- Le support de l'option « inet6 » a été supprimé dans /etc/resolv.conf. Les drapeaux obsolètes RES_USE_INET6, RES_INSECURE1 et RES_INSECURE2 ont été supprimés de resolv.h;
- Lors de l'activation de l'option « —enable-bind-now », les programmes installés sont désormais liés en utilisant le drapeau BIND_NOW;
- Le fichier d'en-tête spécifique à Linux sys/sysctl.h et la fonction sysctl ont été déclarés obsolètes, et les applications doivent désormais utiliser le pseudo-système de fichiers /proc;
- Pour la compilation de Glibc, GCC 6.2 ou une version plus récente est désormais requise (tous les compilateurs peuvent être utilisés pour la compilation des applications);
- Vulnérabilité corrigée dans l'implémentation de la fonction memcmp pour la sous-architecture x32 (à ne pas confondre avec x86 IA-32), ce qui a entraîné un retour incorrect de la valeur 0 pour des chaînes non correspondantes;
- Vulnérabilité corrigée , ce qui peut entraîner la lecture de données en dehors des limites du tampon lors du traitement de certaines expressions régulières.
Source : opennet.ru
