不受信任的char指针参数

Har*_*rry 0 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);
}   
Run Code Online (Sandbox Code Playgroud)

假设调用者是Darth Vader,为了确保当我们在"safe_force_it_is"上使用strlen/strnlen或memchr这样的东西时,会有一个NULL终止符,并且当我们使用时我们没有跑到黑暗的一边我们期望什么是有效的字符串

Joh*_*nck 5

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

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