Programování

Glibc 2.44 nastaví ladicí přepínače všem programům, formát souboru ale nezaručuje

Knihovna GNU C vyšla ve verzi 2.44. Novinkou je soubor /etc/tunables.conf, kterým správce nastaví ladicí přepínače knihovny všem programům naráz; ldconfig je uloží do mezipaměti ld.so.cache. Oznámení k vydání zároveň říká, že formát toho souboru ani jeho umístění nejsou stabilní rozhraní.

· 3 zhlédnutí

Knihovna GNU C je základ, na kterém v linuxových systémech stojí skoro každý program: obstarává práci se soubory, sítí, pamětí i překlad jmen na adresy. Verzi 2.44 oznámil 25. července v konferenci libc-alpha správce vydání Andreas K. Hüttel. V seznamu přispěvatelů je 111 jmen a vydání zavírá 67 hlášených chyb.

Červené logo Free Software Foundation na světle zelené stěně kanceláře
Logo Free Software Foundation na stěně její bostonské kanceláře. Knihovna glibc patří do projektu GNU, který nadace zaštiťuje. Foto: Mike Linksvayer, Wikimedia Commons (CC0)

Největší novinka je soubor /etc/tunables.conf. Nastavují se v něm takzvané tunables, tedy přepínače, kterými jde měnit chování knihovny za běhu – od prahů, kdy alokátor paměti vrací paměť zpátky systému, po využití bezpečnostních rozšíření procesoru. Dosud se zadávaly proměnnou prostředí GLIBC_TUNABLES, a tím pádem zvlášť pro každé spuštění.

Hodnoty projdou přes ldconfig do mezipaměti

Podle dokumentace, kterou k funkci napsal DJ Delorie, má soubor jeden přepínač na řádek:

glibc.malloc.trim_threshold=128
glibc.malloc.check=3

Samotný soubor ale programy nečtou. Přeloží ho ldconfig, tedy nástroj, kterým se po instalaci knihoven obnovuje jejich rejstřík, a uloží hodnoty jako rozšíření do mezipaměti /etc/ld.so.cache. Odtud si je vezme každý program při startu. Na už běžící programy změna nemá vliv. Soubor umí i vkládat další soubory příkazem include, stejnou syntaxí jako dávno zavedený ld.so.conf.

Předpona rozhoduje, kdo smí hodnotu přepsat

Hodnoty ze systémového souboru fungují jako výchozí: přebíjejí to, co má program zabudované, ale samy je pořád možné přebít proměnnou prostředí. Právě tohle jde u jednotlivého řádku vypnout. Předpona nonoverridable nebo znak - zablokuje změnu z prostředí a dá přednost systémovému nastavení, overridable či + je výchozí chování.

Druhá sada předpon vybírá podle toho, jestli proces běží s vyššími právy – dokumentace mluví o příznaku AT_SECURE, tedy o programech se setuid, setgid nebo se zvýšenými oprávněními. onlysecure (@) se použije jen na ně, nonsecure ($) jen na ostatní, anysecure (*) na všechny.

Filtr umí zacílit na jediný program

K tomu přibyly filtry. Řádek ve tvaru [proc:vzor] omezí následující přepínače na konkrétní program, ať už podle celé cesty, nebo jen podle jména souboru. Jméno procesu si knihovna přečte z /proc/self/exe, a když to nejde, z argv[0] – to ale ne u procesů s vyššími právy. Ukázka z dokumentace zapíná v celém systému ochranu návratových adres stínovým zásobníkem a jednomu programu, který na ní padá, ji vypíná:

-glibc.cpu.x86_shstk=1
[proc:/usr/bin/program_that_crashes_with_shstk]
+glibc.cpu.x86_shstk=0

Filtr platí do dalšího filtru, do řádku s prázdnými hranatými závorkami, nebo do konce souboru. Kód pochází z dílny Red Hatu; dokumentaci zapsal Delorie 26. června a revidoval ji Arjun Shankar.

Rozhraní, které se smí změnit

Oznámení k vydání k novince připojuje větu, která stojí za přečtení dřív, než si ji správce zapíše do konfigurace serverů: konkrétní přepínače, formát souboru /etc/tunables.conf ani cesta k němu nepatří mezi stabilní rozhraní knihovny a mezi vydáními se můžou změnit. Kdo si na tenhle soubor postaví nasazení, počítá s tím, že mu příští verze glibc může sáhnout na syntaxi.

Server Phoronix při zápisu funkce do repozitáře upozornil ještě na jednu věc: díky předponě, která zakáže přepsání z prostředí, jde nově některé přepínače uzamknout.

Tři bezpečnostní upozornění, čtyři čísla CVE

Bezpečnostní oddíl oznámení jmenuje tři upozornění. Dvě se týkají funkcí gethostbyaddrgethostbyaddr_r: podle popisu u CVE-2026-4437 mohla podvržená odpověď DNS serveru vést k tomu, že program vzal část odpovědi, která odpovědí není, jako platnou; CVE-2026-4438 pak popisuje vracení neplatných jmen. Obojí se týká verzí 2.34 až 2.43. Třetí, CVE-2026-4046, je pád funkce iconv na kontrolním výrazu při převodu ze znakových sad IBM1390 a IBM1399; záznam u něj rovnou uvádí, že se to dá obejít odstraněním obou sad ze systému, kde je nikdo nepotřebuje.

V seznamu opravených chyb je ale ještě čtvrté číslo. U hlášení 34069 stojí CVE-2026-6238, přečtení paměti za koncem vyrovnávací paměti ve funkci ns_sprintrrf u poškozených záznamů DNS. Samostatné upozornění k němu v oznámení není. Záznam v databázi jmenuje tři zavržené funkce určené jen k ladění aplikací; překladač jmen je při své práci nevolá a doporučení nepoužívat je platí od verze 2.34.

Přibyl LoongArch32, zmizela 31bitová podpora s390

Ze zbytku vydání vyčnívá jedna věta pro programátory v jazyce C. Dokumentace nově říká, že příští verze glibc můžou zmírnit požadavky na zarovnání u malých alokací: malloc(1) tak jednou může vrátit ukazatel na lichou adresu, protože objekt velikosti 1 žádné větší zarovnání nepotřebuje. Kdo se spoléhá na to, že z alokátoru chodí adresy zarovnané jako dosud, má varování.

Matematické funkce cosh, sinhtanh jsou převzaté z projektu CORE-MATH, který se zabývá správně zaokrouhlenými implementacemi. Makro assert zvládne kvůli chystanému C++26 víc argumentů oddělených čárkami. Na procesorech RISC-V dostalo vektorové varianty třináct funkcí pro práci s řetězci a pamětí. Na AArch64 přibyly vektorizované varianty dalších matematických funkcí a u rozšíření Guarded Control Stack se po jeho zapnutí operace s ním zamknou, aby program nemohl ochranu za běhu vypnout.

Podpora architektur se rozešla na dvě strany: přibyl 32bitový LoongArch, naopak 31bitová varianta s390 skončila. Zrušená je i volba překladu --enable-memory-tagging a s ní i příslušná funkce pro AArch64. Přibylo jazykové prostředí hrx_BR pro hunsrik, kterým se mluví v Brazílii.

Do systémů se novinky dostanou s dalším kolem vydání distribucí; Phoronix jmenuje Ubuntu 26.10 a Fedoru 45. Hlavní vývojová větev se mezitím otevřela pro verzi 2.45; zpráva o tom leží v archivu konference hned nad oznámením o vydání.

Programování

Diskuse

Zatím tu nikdo nediskutuje.

Diskutovat mohou přihlášení čtenáři – přihlaste se nebo si založte účet.

← zpět na výpis