14 Stimmen

Mac-Lösung für "sichere" Alternativen zu "unsicheren" Funktionen der C/C++-Standardbibliothek?

Welches ist die beste "sichere" C-Bibliothekslösung für den Mac aus einer Hand? Ich verwende Anführungszeichen bei "sicher"/"unsicher", weil es viele Diskussionen über die Vorteile bestimmter Funktionen der Standardbibliothek oder ihrer vermeintlich verbesserten Alternativen gibt.

Viele traditionelle Funktionen der Standard C Library (z.B., vfprintf ) gelten als unsicher, da die Möglichkeit eines Pufferüberlaufs oder anderer Sicherheitsprobleme besteht.

Unter Windows werden die Microsoft C/C++-Compiler anbieten. die "_s"-Funktionen (z.B., vfprintf_s ) als eine sicherere Alternative zu den Aufrufen der Standardbibliothek. Diese Funktionen sind kein direkter Ersatz, da sie die unterschiedlichen Signaturen haben, die notwendig sind, um zusätzliche Sicherheitsinformationen (z. B. Pufferlänge) bereitzustellen. Sie bieten auch andere Funktionen wie die Erkennung ungültiger Formatstrings, unterschiedliche Dateisicherheit usw. Soweit ich weiß, ist diese Implementierung nicht für den Mac verfügbar.

Bietet Apple (oder ein Drittanbieter) etwas Ähnliches für die Verwendung mit GCC unter OSX an?

Insbesondere bin ich auf der Suche nach "sicheren" Implementierungen von mindestens die folgenden Funktionen:

fopen vfprintf vsprintf sprintf strncpy strcpy strcat

Bitte beachten Sie: Diese Frage bezieht sich auf den Mac. Ich frage NICHT nach Ihrer Meinung zu Microsofts Implementierung (es sei denn, sie ist auf dem Mac verfügbar). Obwohl einige dieser Funktionen leicht selbst zu schreiben sind, sind es nicht alle. Ich frage NICHT, wie ich sie selbst schreiben kann. Ich frage NICHT nach Tipps für die Verwendung von STL-Klassen für diese Zwecke. Ich frage NICHT, wie man Warnungen ausschalten kann. Meine besonderen Bedürfnisse sind sehr spezifisch. Ich versuche, eine Best-Practice-Mac-API zu finden, die den traditionellen C-Bibliotheksaufrufen so ähnlich wie möglich ist und gleichzeitig Sicherheit bietet. Natürlich wäre eine portable Implementierung, die auf Mac und Windows (und anderen Betriebssystemen) funktioniert, noch besser.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X