根据http://msdn.microsoft.com/en-us/library/78zh94ax%28v=vs.80%29.aspx,
wcslen 函数和其他类似函数会招致缓冲区溢出问题带来的潜在威胁。
我应该担心吗,如果是,我怎样才能安全地使用这些功能?
根据http://msdn.microsoft.com/en-us/library/78zh94ax%28v=vs.80%29.aspx,
wcslen 函数和其他类似函数会招致缓冲区溢出问题带来的潜在威胁。
我应该担心吗,如果是,我怎样才能安全地使用这些功能?
你应该担心的事情和你应该担心的事情wcslen
一样多,例如strlen
。这些函数需要一个 C 字符串,即指向以空字节 (0x00) 终止的字符序列的指针。如果您不包含空字节,它们将愉快地继续遍历内存(超出您传递给它们的任何缓冲区的限制):
const char s1[] = { 'a', 'b', 'c' }; /* Array of three characters, no null-terminator */
strlen( s1 ); /* Unsafe, anything may happen. */
const char s2[] = "abc"; /* Array of three characters plus null-terminator */
strlen( s2 ); /* Safe, returns '3'. */