Sicherheitsloch in Security-Bibliothek

Seit 30 Jahren jeden Tag der gleiche Programmierfehler, der sowas von offensichtlich ist. Ist er das wirklich? Menschen machen nunmal Fehler, das liegt nicht an C selbst, sondern daran, dass 99% aller Menschen eben zu blöd für C sind. Menschen machen Fehler, das ist so und hat ausnamsweise mal nichtsmit Blödheit zu tun. Man sollte überhaupt alle C-Bibliotheken ein für alle Mal in den Mistkübel befördern und von Leuten, die es wirklich können, neu programmieren lassen. Wobei gilt: Einer programmiert, drei kontrollieren. Bei Fehlern: Weg damit, Ursache finden, das ganze nochmal von vorne. Siehe Extreme Programming: erst Test schreiben, dann programmieren, Test laufen lassen und so lange Fehler suchen, bis der Test erfolgreich war. Und das alles zu zweit. Vorzugsweise sollten außerdem nicht überall null-terminierte Strings benutzt werden, sondern Strukturen mit dazugehörigen (trusted) Methoden. Ich benutze für Stringoperationen in C eine selbstprogrammierte, zur Zeit noch experimentelle Bibliothek, die solche Strukturen und dazugehörige Funktionen zur Verfügung stellt. Damit kann man per sstrcat() notfalls auch einfach im Blindflug einfüllen, ohne dass es zu einem Overflow kommt. Umwandlung von 0-terminiertem String zu Struktur und von der Struktur zum0-terminierten String gibt’s natürlich auch. Und da das immer noch Fehleranfällig ist, sollte man das automatisieren … wenn man die korrekte Benutzung undInitialisiserung der Strukturen erzwingen könnte … warum C, wenn es C++ gibt? Und jetzt bitte keinen “weil es effizienter ist”-Blödsinn. Wenn ich in C++ hocheffizient entwickeln will, kann ich das ohne Weiteres. Mit Verzicht auf virtuelle Funktionen und Vererbung, statt dessen Templates verwenden (wenn kein Laufzeitpolymorphismus benötigt wird, dann kann man damit alles erschlagen), und inline-Funktionen. Wenn man nur ein einziges Mal ganz kleine Teile des Programmes richtig programmiert, dann kann man wesentlich effizienter Programmieren, weil man nicht an jeder Ecke irgendwelche konfusen Stringoperationen mit fragwürdigen Checkings durchführen muss, sondern alles gekapselt in einer halbwegs intelligenten Bibliothek vorhanden ist. Da kann ich wieder nur auf XP verweisen.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>