C++ printf 问题 : How can I safely pass a char* to printf?

标签 c++ pointers printf

const char* abc = "foo";
printf(abc);

这安全还是合适?我看到了一些遗留代码,包括这个。 谢谢!

非常非常抱歉..我弄错了,我改回来了....

最佳答案

不,这不安全。假设 abc 指向一个有效的字符串(目前还没有),这种模式可能容易受到格式字符串漏洞的影响。引用Format string attacks

编辑:我看到您修复了问题中的代码。它曾经将 abc 作为第一个参数传递给 printf,这真的非常糟糕。既然您提出了第一个参数 "%s",就好多了。这两者并不相似,并且在安全性方面存在巨大差异,因此请在您的遗留代码中寻找这种模式。

关于C++ printf 问题 : How can I safely pass a char* to printf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4868759/

相关文章:

c++ - 如何在从原始图像中提取的子图像中执行模板匹配过程并在原始图像中显示结果

c - printf %p 段错误

我可以假设所有平台都支持 `printf` 的颜色吗?

困惑为什么函数不打印地址

c++ - 如何使用 Makefile (g++) 仅将某些文件链接到对象?

c++ - 为什么声明为类成员的 const 变量仍然可以修改?

c++ - 从 system::DateTime 中拆分日期和时间

c++ - 指针还是数组?

c++ - 指针类错误

c - 如何用 0(零)填充整数?