0
据http://msdn.microsoft.com/en-us/library/78zh94ax%28v=vs.80%29.aspx,如何保护wcslen功能以及其他类似功能
wcslen功能和其他类似的功能承担由缓冲区溢出问题所带来的潜在威胁。
我应该担心,如果是的话,我该如何安全地使用这些功能?
据http://msdn.microsoft.com/en-us/library/78zh94ax%28v=vs.80%29.aspx,如何保护wcslen功能以及其他类似功能
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'. */
也许值得一提的是'strlen_s'和类似的安全功能都可以用于在缓冲区的大小已知时防止此问题。 –