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'和類似的安全功能都可以用於在緩衝區的大小已知時防止此問題。 –