c++ - 当与可能导致缓冲区溢出的函数一起使用时,是否应该比其他变量更仔细地检查外部变量?

标签 c++ extern buffer-overflow

我只是想知道是否将外部变量视为源缓冲区并将其作为参数传递给 strcpy() 或任何其他可能导致缓冲区溢出的函数是否与传递它一样不安全并且可能导致缓冲区溢出来自 fgets() 函数的参数,其指定限制高于缓冲区的大小。

应特别注意这些外部变量的使用,还是应将它们与任何其他变量区别对待?

最佳答案

extern 仅定义变量的链接,它不会以任何其他方式更改变量。

Whether it is safe?

它与任何其他变量一样安全/不安全,声明为 extern 的变量没有影响。
使用 strcpy 本身是不安全的,可能会导致缓冲区溢出。
在 C++ 中,更好的选择是使用 std::string

关于c++ - 当与可能导致缓冲区溢出的函数一起使用时,是否应该比其他变量更仔细地检查外部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12956810/

相关文章:

c++ - 在类定义中使用 extern decl 说明符进行编程

c++ - 如何解决这个未声明的标识符

c - 如何设置外部变量的值?

在雪豹中创建缓冲区溢出

c++ - 在 C++ 中创建不可变对象(immutable对象)的更好方法

c++ - 哈希输出为 BYTE 而不是 std::string?

c - printf() 影响缓冲区溢出情况

c - 缓冲区溢出: send exploit with pwntools changes bytes

c++ - 当元素数 > 1000 时,如何制作 vector 的笛卡尔积?

python - 在这种情况下,为什么 Python 比 C++ 快?