不受信任的char指针参数

时间:2014-09-24 08:24:38

标签: 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,为了确保当我们使用像strlen / strnlen或memchr这样的东西时,Yoda会怎么做?safe_force_it_is"当我们使用我们期望的有效字符串时,我们不会遇到黑暗的一面?

1 个答案:

答案 0 :(得分:5)

获取未知长度的字符串并尝试确定它是否为空终止是不合理的。如果不是,你怎么知道何时停止?

可能有一些疯狂的,不便携的想法,但在理智的程序中不需要它们。您需要知道输入是以null结尾的,否则您需要知道它的最大长度。