Le projet TrapC développe un langage de type C, fonctionnant en toute sécurité avec la mémoire.

La startup Trasec dĂ©veloppe un langage de programmation appelĂ© TrapC, qui est un dialecte du C, garantissant une gestion sĂ©curisĂ©e de la mĂ©moire. Pour Ă©viter les erreurs liĂ©es Ă  la mĂ©moire, telles que les dĂ©passements de tampon et l'accĂšs Ă  la mĂ©moire dĂ©jĂ  libĂ©rĂ©e, TrapC utilise une approche complĂštement diffĂ©rente pour les pointeurs ainsi qu'un mĂ©canisme spĂ©cial de capture des erreurs basĂ© sur des gestionnaires d'exceptions (trap). Le code source du compilateur pour TrapC est prĂ©vu pour ĂȘtre ouvert en 2025.

Il a Ă©tĂ© dĂ©clarĂ© que les fonctionnalitĂ©s de gestion des pointeurs ne perturberont pas l'approche habituelle et seront mises en Ɠuvre par le biais du compilateur. Selon les concepteurs du langage, le compilateur garantira que les pointeurs ne se rĂ©fĂšrent qu'aux zones de mĂ©moire appropriĂ©es et vĂ©rifiera toutes les limites des tampons. Le compilateur mĂ©morise les types et empĂȘche les conversions de types non sĂ©curisĂ©es. Toutes les variables et tampons créés sont explicitement initialisĂ©s ou remplis de zĂ©ros par le compilateur.

Au lieu de malloc, TrapC utilise un constructeur new similaire Ă  C++. Les appels Ă  free et delete n'existent pas, et la gestion de la mĂ©moire est laissĂ©e au compilateur, ce qui protĂšge contre les erreurs entraĂźnant des fuites de mĂ©moire. Une gestion automatique incrĂ©mentielle de la mĂ©moire est utilisĂ©e dans le tas, mais sans ramasse-miettes. Au niveau de l'ABI, TrapC sera compatible avec le C, ce qui permettra de combiner dans une mĂȘme application le code TrapC et le code C pur, mais la sĂ©curitĂ© de la gestion de la mĂ©moire ne sera pas assurĂ©e pour le code C.

Le projet est dirigé par Robin Rowe, ancien professeur d'informatique ayant participé à des comités de développement des normes C et C++, qui a également créé l'éditeur graphique Cinepaint, utilisé dans la production de certains films hollywoodiens, et la bibliothÚque POSIX libunistd pour Windows. Gabrielle Pantera, qui a occupé un poste de direction chez Disney, est cofondatrice de la société Trasec.

Les dĂ©tails sur le projet ne sont pas encore fournis, seulement quelques exemples de code sont montrĂ©s, dans lesquels il est dĂ©clarĂ© par exemple que TrapC ne permettra pas de dĂ©bordement de tampon buff lors de l'exĂ©cution de «strcpy(buff,argv[1]);» ou ne permettra pas d'augmenter le pointeur ou l'index du tableau d'une valeur qui le dĂ©place au-delĂ  du tampon allouĂ© ou de la fin du tableau. La maniĂšre dont cette protection est mise en Ɠuvre n'est pas expliquĂ©e. // darpa_tractor.c int main(int argc,char* argv[]) { char buff[8]; // TrapC initialise implicitement Ă  zĂ©ro, pas de mĂ©moire sale int success = 0; // En C, un Ă©crasement de tampon corrompt success strcpy(buff,argv[1]); // TrapC ne peut pas provoquer de dĂ©bordement, strcpy est sĂ»r if(!strcmp(buff, "s3cr8tpw")) { success = 1; } if(success) // TrapC a bloquĂ© l'Ă©crasement de strcpy, success est bon { printf("Bienvenue!\n"); } return !success; } // trapc_ptr.c int main() { const char* ptr = "Hello World"; // largeur de 12 caractĂšres while(ptr) // Pas de dĂ©bordement de tampon avec TrapC { printf("%c",*ptr); // afficher un caractĂšre Ă  la fois ptr++; // DĂ©passe la fin : TrapC met ptr Ă  null ! } // À NE PAS tenter cela en C, provoquera un segfault ! assert(ptr == 0); return 0; } // trapc_array.c int score[10]; printf("%i",score[-1]); // TrapC n'autorisera pas l'accĂšs for(int i = 0;i

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster