Hirdetés

Hat év munka után eltűnik a Linux kernel egyik régi hibaforrása



|

A Linux 7.2-ben végleg kivezetik a problémás strncpy API-t.

Hirdetés

A Linux kernel fejlesztése sokszor nem látványos újdonságokról, hanem régi, kellemetlen technikai adósságok felszámolásáról szól. Most éppen egy ilyen hosszú folyamat ért fontos ponthoz: a Linux 7.2 fejlesztési ciklusában végleg eltávolították a kernelből az strncpy API-t, amelyet a fejlesztők évek óta a hibák egyik makacs forrásaként kezeltek.

A változtatás elsőre nagyon mélyen technikai apróságnak tűnhet, de a jelentősége nagyobb annál. Az strncpy egy régi C-s függvény, amelyet karakterláncok másolására használtak, de a viselkedése sokszor félreérthető volt. Nem garantálta minden esetben, hogy a célként megadott szöveg megfelelően le legyen zárva, miközben bizonyos esetekben feleslegesen nullákkal töltötte ki a rendelkezésre álló helyet. Ez a két tulajdonság együtt éppen elég volt ahhoz, hogy nehezen észrevehető hibákhoz vezessen.

A Linux fejlesztői ezért évekkel ezelőtt elkezdték lecserélni az strncpy használatát egyértelműbb, biztonságosabb megoldásokra. A munka a beszámolók szerint több mint hat évig tartott, és 362 commiton át jutott el odáig, hogy a régi API maradványait is ki lehessen takarítani a kernelből. A legtöbb módosítást Justin Stitt végezte, aki 211 committal járult hozzá a folyamat lezárásához.

Hirdetés

Az ilyen változtatások azért fontosak, mert a kernel a rendszer legérzékenyebb része. Ha itt egy régi, félreérthető függvény újra és újra hibákhoz vezethet, akkor nem elég dokumentálni, hogy óvatosan kell használni. Jobb teljesen megszüntetni, és olyan megoldásokra cserélni, amelyek nevéből és működéséből is világosabb, mire valók.

Az strncpy helyét több célzottabb függvény veszi át. Van külön megoldás a lezárt karakterláncok másolására, másik akkor, ha nullázott kitöltésre is szükség van, és megint másik akkor, ha nem klasszikus szövegről, hanem fix méretű memóriaterületről van szó. Ez elsőre bonyolultabbnak hangzik, de fejlesztői szempontból éppen ez a lényeg: nem egyetlen zavaros viselkedésű eszközt kell mindenre használni, hanem azt, amelyik pontosan az adott feladatra készült.

A felhasználók ebből valószínűleg semmit sem fognak közvetlenül észrevenni. Nem lesz tőle látványosan gyorsabb az asztali Linux, és nem jelenik meg új menüpont a rendszerben. Hosszabb távon viszont az ilyen takarítások növelhetik a kernel stabilitását és biztonságát, mert csökkentik azoknak a régi kódrészleteknek a számát, amelyekből később hibák vagy sérülékenységek nőhetnek ki.

A Linux 7.2 várhatóan hamarosan belép a kiadásra jelölt verziók szakaszába, így az strncpy eltávolítása már ennek a fejlesztési ciklusnak az egyik fontos belső eredménye lehet. Nem hangzik olyan izgalmasan, mint egy új hardvertámogatás vagy teljesítménynövekedés, de a kernel szempontjából pontosan az ilyen változtatások tartják karban azt az alapot, amelyre a fél modern szoftvervilág épül.

Hirdetés

Úgy tűnik, AdBlockert használsz, amivel megakadályozod a reklámok megjelenítését. Amennyiben szeretnéd támogatni a munkánkat, kérjük add hozzá az oldalt a kivételek listájához, vagy támogass minket közvetlenül! További információért kattints!

Engedélyezi, hogy a https://www.pcwplus.hu értesítéseket küldjön Önnek a kiemelt hírekről? Az értesítések bármikor kikapcsolhatók a böngésző beállításaiban.