Das Projekt TrapC entwickelt eine C-ähnliche Sprache, die sicher mit Speicher umgeht.

Das Startup Trasec entwickelt die Programmiersprache TrapC, einen Dialekt der Programmiersprache C, der sichere Speicheroperationen ermöglicht. Um Fehler im Umgang mit dem Speicher, wie das Überlaufen eines zugewiesenen Puffers und den Zugriff auf bereits freigegebenen Speicher, zu verhindern, implementiert TrapC eine grundlegend andere Handhabung von Zeigern sowie einen speziellen Fehlerinterzeptionsmechanismus auf Basis von Ausnahmebehandlern (trap). Der Quellcode des Compilers für TrapC soll 2025 veröffentlicht werden.

Es wurde erklärt, dass die Besonderheiten im Umgang mit Zeigern möglichst den gewohnten Ablauf nicht stören und durch den Compiler umgesetzt werden. Laut den Entwicklern der Sprache wird der Compiler garantieren, dass Zeiger nur auf die ihnen zugeordneten Speicherbereiche verweisen und alle Puffergrenzen überprüft werden. Der Compiler merkt sich die Typen und lässt keine unsicheren Typkonvertierungen zu. Alle erstellten Variablen und Puffer werden vom Compiler explizit initialisiert oder mit Nullen gefüllt.

Anstelle von malloc wird in TrapC ein dem C++-Konstruktor new ähnlicher Mechanismus verwendet. Die Aufrufe von free und delete sind nicht vorhanden, da der Compiler für die Speicherfreigabe verantwortlich ist, was vor Fehlern schützt, die zu Speicherlecks führen können. In der Heap wird inkrementelle automatische Speicherverwaltung angewendet, jedoch ohne Garbage Collector. Auf ABI-Ebene wird TrapC mit C kompatibel sein, was die Kombination von TrapC- und reinem C-Code in einer Anwendung ermöglicht, jedoch wird für C-Code keine Sicherheit im Umgang mit Speicher garantiert.

Das Projekt wird von Robin Rowe geleitet, einem ehemaligen Professor für Informatik, der an Komitees zur Entwicklung der Standards für C und C++ beteiligt war. Er hat einen Grafikeditor namens Cinepaint entwickelt, der bei der Produktion einiger Hollywoodfilme verwendet wurde, sowie die POSIX-Bibliothek libunistd für Windows. Mitbegründer des Unternehmens Trasec ist Gabrielle Pantera, die eine Führungsposition bei Disney innehatte.

Details about the project are not yet provided, only a few examples with code are shown, which state that TrapC will not allow buffer overflow with "strcpy(buff, argv[1]);" or prevent the pointer or array index from being incremented to a value that shifts it beyond the allocated buffer or the end of the array. How such protection is achieved is not explained. \/\/ darpa_tractor.c int main(int argc, char* argv[]) { char buff[8]; \/\/ TrapC implicitly zeros, no dirty memory int success = 0; \/\/ In C, buffer overwrite corrupts success strcpy(buff, argv[1]); \/\/ TrapC cannot overrun, strcpy safe if(!strcmp(buff, "s3cr8tpw")) { success = 1; } if(success) \/\/ TrapC blocked strcpy overwrite, success good { printf("Welcome!\n"); } return !success; } \/\/ trapc_ptr.c int main() { const char* ptr = "Hello World"; \/\/ 12 char wide while(ptr) \/\/ No buffer overrun with TrapC { printf("%c", *ptr); \/\/ print one char at a time ptr++; \/\/ Steps off the end: TrapC nulls ptr! } \/\/ Do NOT attempt this in C, will segfault! assert(ptr == 0); return 0; } \/\/ trapc_array.c int score[10]; printf("%i", score[-1]); \/\/ TrapC will not allow access for(int i = 0;i

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster