gpt4 book ai didi

c++ - 安全使用 strcpy

转载 作者:太空狗 更新时间:2023-10-29 20:09:02 25 4
gpt4 key购买 nike

在我们公司的编码标准中禁止使用普通的旧 strcpy,因为它可能会导致缓冲区溢出。我正在寻找我们在代码中链接的一些第 3 方库的源代码。库源代码像这样使用 strcpy:

for (int i = 0; i < newArgc; i++)
{
newArgv[i] = new char[strlen(argv[i]) + 1];
strcpy(newArgv[i], argv[i]);
}

因为在为要复制到的缓冲区分配内存时使用了 strlen,所以这看起来不错。有没有可能有人可以利用这个正常的 strcpy,或者这是否像我认为的那样安全?

我见过 strcpy 的天真使用导致缓冲区溢出的情况,但这似乎没有,因为它总是使用 strlen 为缓冲区分配正确的空间量,然后使用 argv[ ] 作为应始终以 null 终止的来源。

老实说,我很好奇是否有人使用调试器运行这段代码可以利用这个,或者是否有人试图破解我们的二进制文件(使用我们在其编译版本中链接的库源)可以使用任何其他策略来利用 strcpy 的这种用法。感谢您的投入和专业知识。

最佳答案

安全地使用 strcpy可能 - 这只是相当艰苦的工作(这就是为什么您的编码标准禁止它)。

但是,您发布的代码不是漏洞。无法用它覆盖内存位;我不会费心重写它。 (如果您确实决定重写它,请改用std::string

关于c++ - 安全使用 strcpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50218217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com