Efter sex månaders utveckling publicerad systembiblioteksversion GNU C bibliotek (glibc) 2.32, som helt uppfyller kraven i standarderna ISO C11 och POSIX.1-2017. Den nya utgåvan innehåller korrigeringar från 67 utvecklare.
Från de implementerade i Glibc 2.32 förbättringar du kan notera:
Tillagt stöd för Synopsys ARC HS (ARCv2 ISA)-processorer. Porten kräver minst binutils 2.32, gcc 8.3 och Linux-kärna 5.1 för att köras. Tre ABI-varianter stöds: arc-linux-gnu, arc-linux-gnuhf och arceb-linux-gnu (big-endian);
Laddning av revisionsmoduler specificerade i avsnitt DT_AUDIT och
DT_DEPAUDIT för den körbara filen.
För powerpc64le-arkitekturen implementeras stöd för den långa dubbeltypen IEEE128, vilket är aktiverat när man bygger med alternativet "-mabi=ieeelongdouble".
Vissa API:er är kommenterade med GCC-attributet "access", vilket gör att bättre varningar kan genereras när de kompileras i GCC 10 för att upptäcka eventuella buffertspill och andra out-of-bounds-scenarier.
För Linux-system, funktionerna pthread_attr_setsigmask_np och
pthread_attr_getsigmask_np, som ger applikationen möjlighet att specificera en signalmask för trådar skapade med pthread_create.
Kodningsdata, teckentypsinformation och translitterationstabeller har uppdaterats för att stödja Unicode 13.0.0-specifikationen;
Lade till ny rubrikfil , som definierar variabeln __libc_single_threaded, som kan användas i applikationer för enkeltrådiga optimeringar.
Tillagda funktioner sigabbrev_np och sigdescr_np som returnerar det förkortade namnet och beskrivningen av signalen (till exempel "HUP" och "Hangup" för SIGHUP).
Lade till funktioner strerrorname_np och strerrordesc_np som returnerar namnet och beskrivningen av felet (till exempel "EINVAL" och "Ogiltigt argument" för EINVAL).
För ARM64-plattformen har en flagga "--enable-standard-branch-protection" lagts till (eller -mbranch-protection=standard i GCC), vilket gör att ARMv8.5-BTI-mekanismen (Branch Target Indicator) kan skydda exekvering av instruktionsuppsättningar som inte bör exekveras grenövergångar. Blockering av övergångar till godtyckliga sektioner av kod implementeras för att förhindra skapandet av prylar i exploits som använder returorienterade programmeringstekniker (ROP - Return-Oriented Programming; angriparen försöker inte placera sin kod i minnet, utan arbetar på redan existerande delar av maskininstruktioner som slutar med en returkontrollinstruktion, från vilken en kedja av samtal byggs upp för att erhålla önskad funktionalitet).
En stor rensning av föråldrade funktioner har utförts, inklusive borttagningen av alternativen "--enable-obsolete-rpc" och "--enable-obsolete-nsl", rubrikfil . Funktionerna sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore och sigset, arrayerna sys_siglist, _sys_siglist och sys_sigabbrev, symbolerna sys_errlist, _sys_errlist, sys_nerr och _sys_nerr, och NSS-modulen hecsiod har tagits bort.
ldconfig har flyttats som standard för att använda det nya ld.so.cache-formatet, som har stöds i glibc i nästan 20 år.
Sårbarheter fixade:
CVE-2016-10228 – En loop i iconv-verktyget uppstår när den körs med alternativet "-c" när felaktig multi-byte-data behandlas.
CVE-2020-10029 Stackkorruption vid anrop av trigonometriska funktioner med ett pseudo-null-argument.
CVE-2020-1752 - En användningsfri minnesåtkomst i globfunktionen när en referens till hemkatalogen ("~användare") utökas i sökvägar.
CVE-2020-6096 – Felaktig hantering på ARMv7-plattformen av negativa parametervärden i memcpy() och memmove(), som bestämmer storleken på det kopierade området. Tillåter organisera kodexekvering vid bearbetning av data formaterad på ett visst sätt i funktionerna memcpy() och memmove(). Det är betydande att problemet förblev okorrigerad i nästan två månader sedan informationen offentliggjordes och fem månader sedan Glibc-utvecklarna underrättades.