Pufferüberläufe sind nichts Neues. Und dennoch treten sie häufig auf, insbesondere in nativem (dh nicht verwaltetem) Code ...
Ein Teil der Hauptursache ist die Verwendung "unsicherer" Funktionen, einschließlich C ++ - Heftklammern wie memcpy, strcpy, strncpy , und mehr. Diese Funktionen gelten als unsicher, da sie direkt mit nicht eingeschränkten Puffern umgehen und ohne intensive, sorgfältige Grenzüberprüfungen in der Regel alle Zielpuffer direkt überlaufen.
Microsoft über SDL hat die Verwendung dieser "unsicheren" Funktionen verboten und bietet Ersatzfunktionen für C ++ - z. strcpy_s für strcpy, memcpy_s für memcpy usw. (abhängig von der Umgebung). In den neuesten Versionen von Visual Studio können Sie dies sogar automatisch ausführen ...
Aber was ist mit "reinem" C (dh nicht C ++)?
Und insbesondere mit Nicht-MS-Plattformen - einschließlich Linux und sogar Nicht-VS-Compiler unter Windows ...
Hat jemand sicherere Ersatzfunktionen für diese? Empfohlene Problemumgehungen (abgesehen davon, dass einfach mehr Grenzen überprüft werden ...)?
Oder sind wir alle dazu verdammt, die Verwendung von memcpy weiterhin zu wiederholen?