为什么不修改以使其不可利用?

Why is gets not modified to make it non exploitable?

C 中有许多非安全函数,如 gets、printf 等。 当这些漏洞众所周知时,为什么还不修改功能使其安全?

在大多数情况下,您无法在不破坏现有代码的情况下更改函数的签名(即参数的数量和类型)。

易受攻击的函数往往会通过引入具有附加参数(例如缓冲区大小)的替代方法来修复。这些替代功能被设计为在正确使用时不可利用。

比较,例如,sprintf() and snprintf()