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) で終了する一連の文字へのポインタを想定しています。null バイトを含めない場合、喜んでメモリをトラバースし続けます (渡されたバッファの制限を超えて実行されます)。
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'. */