One Article Review

Accueil - L'article:
Source ErrataRob.webp Errata Security
Identifiant 8450167
Date de publication 2024-02-14 17:30:42 (vue: 2024-02-14 23:05:50)
Titre C peut être sûr de la mémoire, partie 2
C can be memory safe, part 2
Texte Ce message de l'année dernière a été publié à un forum, Alors j'ai pensé que je rédige quelques réfutations à leurs commentaires. Le premier commentaireest par David Chisnall, créateur de Cheri C / C ++, qui propose que nous pouvons résoudre le problème avec les extensions de jeu d'instructions CPU.C'est une bonne idée, mais après 14 ans, les processeurs n'ont pas eu leurs ensembles d'instructions améliorés.Même les processeurs RISC V traditionnels ont été créés en utilisant ces extensions. Chisnall: " Si votre sécurité vous oblige à insérer des vérifications explicites, ce n'est pas sûr ".Cela est vrai d'un point de vue, faux d'un autre.Ma proposition comprend des compilateurs crachant avertissements & nbsp; chaque fois que les informations limites n'existent pas. c est pleine de problèmes en théorie qui n'existe pas dans la pratique parce queLe compilateur crache des avertissements en disant aux programmeurs de résoudre le problème.Les avertissements peuvent également noter les cas où les programmeurs ont probablement fait des erreurs.Nous ne pouvons pas obtenir des garanties parfaites, car les programmeurs peuvent encore faire des erreurs, mais nous pouvons certainement réaliser "assez bon". Chisnall: .... Sécurité de la bande de roulement ..... je ne suis pas sûr de comprendre le commentaire.Je comprends que Cheri peut garantir l'atomicité de la vérification des limites, ce qui nécessiterait autrement des instructions (interruptibles).Le nombre de cas où il s'agit d'un problème, et la proposition C ne serait pas pire que d'autres langues comme la rouille. Chisnall: Sécurité temporelle .... & nbsp; Beaucoup de techniques de "propriété" de rouille peuvent être appliquées à C avec ces annotations, à savoir, marquant les variables possédant une mémoire allouée et qui l'emprunte simplement.J'ai examiné beaucoup de bogues célèbres de l'utilisation et de double libre, et la plupart peuvent être trivialement corrigées par annotation. Chisnall: si vous écrivez unLe blog n'a jamais essayé de faire de la grande (million de lignes ou plus) C Code Code Memory Safe, vous sous-estimez probablement la difficulté par au moins un ordre de grandeur. & nbsp; i \\ 'm à la fois un programmeurQui a écrit un million de lignes de code de ma vie ainsi qu'un pirate avec des décennies d'expérience à la recherche de tels bugs.L'objectif n'est pas de poursuivre l'idéal d'un langage 100% sûr, mais de se débarrasser de 99% des erreurs de sécurité.1% moins sûr rend l'objectif un ordre de grandeur plus facile à atteindre. snej: & nbsp; Ce message semble incarner le trait d'ingénieur commun de voir tout problème que vous avez \\ 't personnellementsur comme trivial.Bien sûr, Bro, vous ajoutez quelques correctifs à Clang et GCC et avec ces nouveaux attributs, notre code C sera sûr.Cela ne prendra que quelques semaines et plus personne n'aura plus besoin de rouille. & nbsp; mais j'ai passé des décennies à y travailler.Le commentaire incarne le trait commun de ne pas réaliser à quel point la pensée et l'expertise se trouvent derrière le post.Je quelques patchs à Cang et GCC feront en sorte que C plus sûr .La solution est beaucoup moins sûre que la rouille.En fait, ma proposition rend le code plus interopérable et traduisible en rouille.À l'heure actuelle, la traduction de C en rouille crée juste un tas de code \\ 'dangereux \' qui doit être nettoyé.Avec de telles annotations, dans une étape de refactorisation utilisant des cadres de test existants, des résultats en code qui ne peut pas être transporté automatiquement en toute sécurité à Rust. Quant aux attributs Clang / GCC existants, il n'y a qu'un couple qui correspondLes macros que je propo
Envoyé Oui
Condensat  a  but  i 100 achieve actually add addition after allocated also annotation annotations another any anymore applied are asking atomicity attributes auto because been behind blog borrow both bounds bro bugs bunch but c/c++ can cases certainly cheap checking checks cheri chisnall chisnall: clang clang/gcc cleaned code codebases code” comment comments common communicate communicating compiler compilers couple cpu cpus created creates creator criticisms danso: in david decades difficulty dod doesn don double easier else engineer enough epitomize epitomizes errors even ever everyone exist existing experience expertise explicit extensions fact false famous far first fix fixed forum found frameworks free from full further gcc get getting goal good guarantee guarantees hacker had has haven having help helpful how idea ideal includes information insert instruction instructions internals interoperable interruptible isn just know language languages large last learning least less lifetime like line lines long looking lot macros made magnitude mainstream make makes marking match memory million mistakes more most much multiple namely need needed needs never new not note now number one only order other otherwise out own ownership part patches people perfect personally perspective point pointers post posted posts practice probably problem problems process processors programmer programmers proposal propose proposes pursue reach read realizing reason rebuttals refactoring require requires results reviewed rid right risc rust safe safely safer safety seeing seems set sets share should show simply snej: this solution solve some something spent spits spitting started step such sure take techniques telling temporal testing than then theory these those thought trait translatable translated translating tread tried trivial trivially true trying underestimate understand unsafe upgraded use using variables warnings warnings whenever weeks well what when where which who will worked working worse would write writing written wrote year years you your “talk
Tags
Stories
Notes ★★
Move


L'article ne semble pas avoir été repris aprés sa publication.


L'article ne semble pas avoir été repris sur un précédent.
My email: