【发布时间】:2011-08-25 08:37:20
【问题描述】:
strtok 的哪些功能不安全(就缓冲区溢出而言)我需要注意?
对我来说有点奇怪的是,Visual C++ 中的strtok_s(即“安全”)有一个额外的“上下文”参数,但它看起来在其他方面是一样的……是一样的吗,还是真的不一样?
【问题讨论】:
-
可能是因为 strtok 的两个参数都是指向 char 的指针,所以 strtok 可能无法到达溢出任何本地缓冲区的任何终止符?
-
@0verbose: 嗯...但不是所有 C 字符串都是这样吗?
-
你可以看看实现:openbsd.org/cgi-bin/cvsweb/src/lib/libc/string/…。我也去看看。
-
附带说明,为什么在有strsep的情况下仍然使用它
-
我认为strtok_s中的上下文是为了让它线程安全,就像strtok_r一样