c - 不受信任的字符指针参数

标签 c security buffer-overflow

什么是处理意味着字符串的最佳实践 函数的参数,即

int use_the_force(const char *dark_side_file_name) {
  char *safe_force_it_is = Yoda(dark_side_file_name);
  return useTheForceYouCan(safe_force_it_is);
}   

假设调用者是 Darth Vader,Yoda 会怎么做以确保当我们在“safe_force_it_is”上使用 strlen/strnlen 或 memchr 之类的东西时,有一个 NULL 终止符并且我们不会跑到黑暗面当我们使用我们期望的有效字符串时?

最佳答案

获取一个未知长度的字符串并试图弄清楚它是否以 null 终止是不合理的。如果不是,您怎么知道什么时候停止?

可能有一些疯狂的、不可移植的想法,但它们都不是一个健全的程序所必需的。您需要知道输入以 null 结尾,否则您需要知道它的最大长度。

关于c - 不受信任的字符指针参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26012051/

相关文章:

c - 利用c-linux setuid和系统命令

C++缓冲区溢出在3台机器上不同

c - 关于如何在 C 中指定参数值的建议

c - sscanf 以非常特定的格式使用

c - 从文件读取数据到结构体中 (C)

java - 部署 Java 应用程序时处理安全性

c - 动态内存分配不会使(制作)buff 溢出?

c++ - C/C++ 编译器能否通过 pthread 库调用合法地将变量缓存在寄存器中?

git - 如何使用来自私有(private) git 存储库的应用程序代码构建 docker 镜像?

python - 如何在单元测试中使用敏感数据?