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