NULL終端できるようバッファサイズ-2を上限とする

:から行末までを設定値とするよう変更

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@53 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2011-02-15 00:21:17 +00:00
parent eeb5bf9a80
commit 2e588f3d8c

View File

@ -13,7 +13,8 @@ Result ConfigFileLoader::Initialize(const wchar_t* fileName, void* buffer, const
NN_UTIL_RETURN_IF_FAILED(fi.TryInitialize(fileName));
NN_UTIL_RETURN_IF_FAILED(fi.TryGetSize(&fileSize));
if (fileSize > bufferSize)
// NULL終端ぶん読めるサイズを減らす
if (fileSize > bufferSize - 2)
{
NN_TLOG_("Too Large File\n");
return Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, nn::Result::DESCRIPTION_TOO_LARGE);
@ -57,6 +58,8 @@ Result ConfigFileLoader::ParseData()
bool inEscape = false;
// # で行末までコメント
bool inComment = false;
// : で行頭から:までがkey、:から行末までがvalue
bool inSettingKeyValue = false;
while (pos < m_UsedBufferSize / sizeof(m_Buffer[0]))
{
@ -80,6 +83,15 @@ Result ConfigFileLoader::ParseData()
{
break;
}
if(inSettingKeyValue)
{
break;
}
else
{
inSettingKeyValue = true;
}
m_Buffer[pos] = L'\0';
m_ParamValue[m_ParamNum++] = &(m_Buffer[pos + 1]);
}
@ -92,6 +104,11 @@ Result ConfigFileLoader::ParseData()
{
inComment = false;
}
if(inSettingKeyValue)
{
inSettingKeyValue = false;
}
m_Buffer[pos] = L'\0';
m_ParamName[m_ParamNum] = &(m_Buffer[pos + 1]);
m_ParamValue[m_ParamNum] = L'\0';