A TrapC projekt egy C-szerű nyelvet fejleszt, amely biztonságosan kezeli a memóriát.

A Trasec startup a TrapC programozási nyelvet fejleszti, amely a C nyelv egyik dialektusa, és biztonságos memóriakezelést biztosít. A memóriakezelési hibák, mint például a buffer túlcsordulása és már felszabadított memória elérése, elkerülésére a TrapC alapvetően más megközelítést alkalmaz a mutatók kezelésében, valamint egy kivételkezelőkön alapuló hibafogó mechanizmust (trap). A TrapC fordítójának forráskódját 2025-ben tervezik nyilvánosságra hozni.

A tervezők szerint a mutatókkal való munka jellemzőit a lehető legkevésbé fogják megváltoztatni, és a fordítón keresztül valósítják meg. A nyelv szerzőinek elképzelése szerint a fordító garantálja, hogy a mutatók csak a hozzájuk tartozó memóriaterületekre mutassanak, valamint ellenőrzi az összes buffer határait. A fordító megjegyzi a típusokat, és nem engedélyezi a biztonságtalan típuskonverziókat. Minden létrehozott változót és buffert kifejezetten inicializálnak, vagy nullákkal tölt be a fordító.

A TrapC-ben a malloc helyett egy C++-ra hasonlító new konstruktor használatos. A free és delete hívások nincsenek jelen, a memória felszabadításáért a fordító felel, ami megvédi a memória szivárgásához vezető hibáktól. A heap-ben inkrementális automatikus memória kezelés alkalmazható, de szemétgyűjtő nélkül. Az ABI szinten a TrapC kompatibilis lesz a C-vel, így lehetővé téve TrapC és tiszta C kód kombinálását ugyanabban az alkalmazásban, de a C kód biztonságos memóriakezelését nem garantálja.

A projektet Robin Rowe fejleszti, aki korábbi informatikai professzor volt, részt vett a C és C++ szabványok fejlesztési bizottságaiban, idejekorán létrehozta a Cinepaint grafikus szerkesztőt, amelyet néhány hollywoodi film készítésekor használtak, és a libunistd POSIX könyvtár Windows-ra készült. A Trasec társ-alapítója Gabrielle Pantera, aki vezető pozíciót töltött be a Disney vállalatnál.

A projekt részletei még nem ismertek, csak néhány példát mutatnak be a kódból, amely például állítja, hogy a TrapC megakadályozza a buff puffer overfolyását a "strcpy(buff,argv[1]);" végrehajtásakor, vagy hogy nem engedélyezi egy mutató vagy tömb indexének értékét növelni, így az túllépne a lefoglalt pufferen vagy a tömb végén. A védelem pontos módja nincs kifejtve. \/\/ darpa_tractor.c int main(int argc,char* argv[]) { char buff[8]; \/\/ TrapC implicit módon nulláz, nincs piszkos memória int success = 0;\/\/ A C nyelvben a puffer felülírása megrontja a sikert strcpy(buff,argv[1]); \/\/ TrapC nem engedi a felületet, strcpy biztonságos if(!strcmp(buff,"s3cr8tpw")) { success = 1; } if(success) \/\/ TrapC blokkolta a strcpy felülírást, siker jó { printf("Üdvözöljük!\n"); } return !success; } \/\/ trapc_ptr.c int main() { const char* ptr = "Hello World"; \/\/ 12 karakter széles while(ptr) \/\/ Nincs puffer túlcsordulás a TrapC mellett { printf("%c",*ptr); \/\/ nyomtatás egy karakterrel egyszerre ptr++; \/\/ Lépés a végén: TrapC nullázza a ptr-t! } \/\/ NE próbáld ezt C-ben, szegmentációs hiba lesz! assert(ptr == 0); return 0; } \/\/ trapc_array.c int score[10]; printf("%i",score[-1]); \/\/ TrapC nem engedélyezi a hozzáférést for(int i = 0;i

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster