更安全的C标准库替代品

Ben*_*ack 13 c low-level

在I/O安全方面,C标准库非常差.许多函数都有缓冲区溢出(gets,scanf),或者如果没有给出正确的参数(scanf),可能会破坏内存,依此类推.每隔一段时间,我就遇到一位有进取心的黑客,他自己编写了一个缺乏这些缺陷的图书馆.

你见过的这些图书馆有哪些最好的?您是否在生产代码中使用过它们,如果是这样,那么它们不仅仅是业余爱好项目?

kli*_*eta 8

我使用GLib库,它有很多很好的标准和非标准功能.

请参阅https://developer.gnome.org/glib/stable/

也许你坠入爱河...... :)

例如:

https://developer.gnome.org/glib/stable/glib-String-Utility-Functions.html#g-strdup-printf

解释说g_strdup_printf是:

与标准C sprintf()函数类似但更安全,因为它计算所需的最大空间并分配内存来保存结果.


Leo*_*Hat 5

这并没有真正回答您关于使用最安全的库的问题,但是您提到的大多数容易受到缓冲区溢出影响的函数都有更安全的版本,这些版本将缓冲区长度作为参数,以防止标准时打开的安全漏洞使用方法。

除非您放宽了警告级别,否则当您使用已弃用的方法时,通常会收到编译器警告,建议您改用更安全的方法。