Efter sex månaders utveckling lanseringen av den nya versionen av Glibc 2.35 tillkännagavs i vilken innehåller korrigeringar från 66 utvecklare och av de implementerade förbättringarna kan vi finna att stöd för lokalen "C.UTF-8" lades till, vilket inkluderar sammanställningar för alla Unicode-koder, men är begränsat till användningen av ASCII-intervall i funktionerna fnmatch, regexec och regcomp för att spara Plats.
Lokalen är cirka 400 KB, varav 346 KB är LC_CTYPE-data för Unicode, och måste installeras separat (ej inbyggt i Glibc). Kodningsdata, teckentypsinformation och translitterationstabeller har uppdaterats för att stödja Unicode 14.0.0-specifikationen.
En annan förändring som sticker ut är att och implementera funktioner och makron som rundar resultatet till en smalare typ, Förutom att implementera funktioner och makron för att hitta minimum och maximum av flyttal av typerna flytande, lång dubbel, _FloatN och _FloatNx, som beskrivs i IEEE 754-2019-specifikationen.
för funktioner exp10, läggs motsvarande makron till i rubrikfilen, som inte är bundna till specifika typer, plus att makrot _PRINTF_NAN_LEN_MAX lades till , som föreslås i utkastet till ISO C2X-standard.
Det dynamiska länksystemet implementerar en ny klassificeringsalgoritm DSO med djupsökning (DFS) för att ta itu med prestandaproblem vid hantering av loop-beroenden. För att välja DSO-sorteringsalgoritmen föreslås glibc.rtld.dynamic_sort-parametern, som kan ställas in på "1" för att falla tillbaka till den tidigare algoritmen.
Förutom det lagt till stöd för en ny funktion '__memcmpeq' till ABI, som används av kompilatorer för att optimera användningen av `memcmp' när returvärdet för denna funktion endast används för att kontrollera slutförandestatus för en operation.
De stöd för automatisk trådregistrering använder systemanropet rseq (omstartbara sekvenser) som tillhandahållits sedan Linux-kärnan 4.18. Systemanropet rseq gör det möjligt att organisera det kontinuerliga utförandet av en grupp instruktioner som inte avbryts och begår resultatet med det sista uttalandet i gruppen. I huvudsak ger det en möjlighet för mycket snabb atomär utförande av operationer som, om de avbryts av en annan tråd, rensas upp och återförsöks.
Å andra sidan ger det standardkompilering av alla körbara filer av de inbyggda programmen och en testsvit i PIE-läge (positionsoberoende körbar).
För att inaktivera detta beteende, alternativet "–disable-default-pie" tillhandahålls, plus för Linux, lade till en glibc.malloc.hugetlb-inställning för att ändra malloc-implementeringen för att använda madvise-systemanropet med MADV_HUGEPAGE-flaggan för mmap och sbrk, eller direkt använda stora minnessidor genom att specificera MAP_HUGETLB-flaggan i mmap-anrop.
I det första fallet kan en prestandaökning uppnås genom att använda transparenta Huge Pages i madvise-läge, och i det andra fallet kan du använda systemreserverade enorma sidor (Huge Pages).
Det bör också noteras att vissa sårbarheter fixades i den här nya versionen:
- CVE-2022-23218, CVE-2022-23219: Ett buffertspill i funktionerna svcunix_create och clnt_create orsakat av att innehållet i en filnamnsparameter kopieras till stacken utan att kontrollera storleken på den kopierade datan. För applikationer byggda utan stackskydd och som använder "unix"-protokollet kan sårbarheten leda till skadlig kodexekvering vid bearbetning av mycket långa filnamn.
- CVE-2021-3998: en sårbarhet i realpath()-funktionen orsakad av att returnera ett felaktigt värde under vissa förhållanden som innehåller orenad restdata från stacken. För SUID-root fusermount-programmet kan sårbarheten användas för att hämta känslig information från processminnet, till exempel för att få pekarinformation.
- CVE-2021-3999: en byte buffertspill i getcwd()-funktionen. Problemet orsakas av en bugg som har funnits sedan 1995. För att anropa ett overflow, i ett separat monteringspunkts namnutrymme, ring bara chdir() i "/"-katalogen.
Slutligen Om du är intresserad av att veta mer om det, Du kan kontrollera detaljerna i följande länk.