Какое лучшее одноразовое "безопасное" решение для библиотеки C на Mac? Я использую кавычки на "безопасном" / "небезопасном", потому что много дискуссий относительно преимуществ определенных функций Стандартной библиотеки или их предположительно улучшенных альтернатив.
Многие традиционные функции стандартной библиотеки C (например, vfprintf
) считаются небезопасными из-за возможности переполнения буфера или других проблем безопасности.
В Windows компиляторы Microsoft C/С++ предоставляют функции "_s" (например, vfprintf_s
) как более безопасную альтернативу стандартные вызовы библиотеки. Эти функции не являются заменой на вставку, поскольку они имеют разные сигнатуры, необходимые для обеспечения дополнительной информации о безопасности (например, длина буфера). Они также предоставляют другие функции, такие как неверное определение строки формата, различная защита файлов и т.д. Насколько мне известно, эта реализация недоступна на Mac.
Обеспечивает ли Apple (или сторонняя сторона) что-либо подобное для использования с GCC на OSX?
В частности, я ищу "безопасные" реализации, по крайней мере, следующих функций:
fopen vfprintf vsprintf sprintf strncpy strcpy strcat
Обратите внимание: этот вопрос касается Mac. Я НЕ прошу вашего мнения о реализации Microsoft (если только он не доступен на Mac.) Хотя некоторые из этих функций могут быть легко написаны сами, не все. Я НЕ спрашиваю, как писать их сам. Я не прошу советов о том, как использовать классы STL для этого. Я не спрашиваю, как отключить предупреждения. Мои особые потребности очень специфичны. Я пытаюсь идентифицировать Mac API с лучшей практикой, который по возможности похож на традиционные вызовы библиотеки C при одновременном добавлении безопасности. Конечно, портативная реализация, которая работает на Mac и Windows (и других операционных системах), будет еще лучше.