C6327
更新 : 2007 年 11 月
警告 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);
}