C6327
警告 C6327: バッファー オーバーランの可能性があります: SysAllocStringLen は、コピーする文字数を確認しないで <数値> 文字を文字列 <変数> からコピーします。 コードがクラッシュする可能性があります
この警告は、バッファー オーバーランが発生する可能性があることを示します。 SysAllocStringLen では、文字列を割り当てた後、指定された文字列から指定された数の文字をコピーします。 SysAllocStringLen ではコピーする文字の数が検証されないため、指定された文字数が文字列内の文字数よりも大きい場合、コードがクラッシュすることがあります。 バッファー オーバーランを避けるには、SysAllocString 関数に正しい文字数を渡す必要があります。
使用例
この警告が発生するコード例を次に示します。
#include <windows.h>
void f ()
{
BSTR bstr;
bstr = SysAllocStringLen(L"txt", 5); // warning 6327
// code...
SysFreeString(bstr);
}
この警告を解決するには、次のコードに示すように、正しい文字列長を渡します。
#include <windows.h>
void f()
{
BSTR bstr;
wchar_t *greeting=L"Hello, World!";
bstr = SysAllocStringLen(greeting, sizeof(greeting));
// code...
SysFreeString(bstr);
}