mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
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:
parent
eeb5bf9a80
commit
2e588f3d8c
@ -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';
|
||||
|
||||
Loading…
Reference in New Issue
Block a user