Tach,
Natürlich ist es Müll, etwas wie den Heartbleed-Bug auszuliefern, aber auch der ist gefunden und gefixt worden, weil es Open Source war.
Das liegt a dem Tick der C/C++ Programmierer, immer alles so zu schreiben, dass Andere es möglichst nicht mehr lesen können. Was sind das doch für tolle Kerle.
die Kritik kann ich in diesem Zusammenhang nicht verstehen; der Heartbleed-Fix zeigt, dass das Problem im Prinzip ein relativ simples war und der Code ist nicht übermäßig unverständlich.
Wenn man solche Dinge in Modula2 oder ähnlichen Sprachen schreiben würde unter Ausnutzung der Range-Checks, würde ich glauben, dass derartige Fehler ausbleiben würden.
Hätte der nötige Range-Check stattgefunden, hätte es den Bug auch in C nicht gegeben und klar, mit einer Sprache, die memory safe ist, ebenfalls nicht; allerdings sind Prgramme wie OpenSSl ja nicht in C geschrieben, weil es self-obfuscating ist, sondern weil es zum Zeitpunkt des Starts des Projekt nicht viel Auswahl an performanten, portablen Sprachen gab. (siehe z.B. http://www.dwheeler.com/essays/heartbleed.html#safe-language); und OpenSSL mal eben in einer anderen Sprache neu umsetzen, würde voraussetzen, dass du Experten findest, die erstens diese andere Sprache ausreichend gut beherrschen und die zum Teil abwegigen Side Channel kennen müssen, die beim implementieren von TLS anfallen. Ich hoffe, dass wir in Zukunft für alle kritische Software Sprachen nutzen werden, die ESC und/oder ähnliches umsetzen; aber das wird dauern.
OpenSSL ist sicher kein Vorzeigeprodukt, wo alles so ist, wie man sich das wünschen würde; aber trotzdem vertraue ich dem deutlich mehr, als einer Implementierung in die niemand reinschauen kann.
mfg
Woodfighter