mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
レビュー反映
wchar_t*にはNULL文字ではなくNULLポインタを代入する ファイル読み取りバッファをNULL終端するように git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@103 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
17cca5847f
commit
a424dee1b1
@ -14,7 +14,7 @@ Result ConfigFileLoader::Initialize(const wchar_t* fileName, void* buffer, const
|
|||||||
NN_UTIL_RETURN_IF_FAILED(fi.TryGetSize(&fileSize));
|
NN_UTIL_RETURN_IF_FAILED(fi.TryGetSize(&fileSize));
|
||||||
|
|
||||||
// NULL終端ぶん読めるサイズを減らす
|
// NULL終端ぶん読めるサイズを減らす
|
||||||
if (fileSize > bufferSize - 2)
|
if (fileSize > bufferSize - sizeof(wchar_t))
|
||||||
{
|
{
|
||||||
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);
|
||||||
@ -22,7 +22,7 @@ Result ConfigFileLoader::Initialize(const wchar_t* fileName, void* buffer, const
|
|||||||
|
|
||||||
m_Buffer = static_cast<wchar_t*>(buffer);
|
m_Buffer = static_cast<wchar_t*>(buffer);
|
||||||
NN_UTIL_RETURN_IF_FAILED(fi.TryRead(&m_UsedBufferSize, m_Buffer, fileSize));
|
NN_UTIL_RETURN_IF_FAILED(fi.TryRead(&m_UsedBufferSize, m_Buffer, fileSize));
|
||||||
|
NN_LOG("config size = %d\n", m_UsedBufferSize);
|
||||||
return ParseData();
|
return ParseData();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +52,8 @@ Result ConfigFileLoader::ParseData()
|
|||||||
|
|
||||||
m_ParamNum = 0;
|
m_ParamNum = 0;
|
||||||
m_ParamName[m_ParamNum] = &(m_Buffer[pos]);
|
m_ParamName[m_ParamNum] = &(m_Buffer[pos]);
|
||||||
m_ParamValue[m_ParamNum] = L'\0';
|
m_ParamValue[m_ParamNum] = L"";
|
||||||
|
m_Buffer[m_UsedBufferSize / sizeof(wchar_t)] = L'\0'; // NULL終端しておく
|
||||||
|
|
||||||
// ダブルクウォート中なら : も文字として読み取る
|
// ダブルクウォート中なら : も文字として読み取る
|
||||||
bool inEscape = false;
|
bool inEscape = false;
|
||||||
@ -112,7 +113,7 @@ Result ConfigFileLoader::ParseData()
|
|||||||
|
|
||||||
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"";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -155,14 +156,14 @@ const wchar_t *ConfigFileLoader::ReadAsWChar(const wchar_t *paramName)
|
|||||||
{
|
{
|
||||||
NN_LOG("Unknown Parameter Name %ls\n", paramName);
|
NN_LOG("Unknown Parameter Name %ls\n", paramName);
|
||||||
}
|
}
|
||||||
return (idx < 0) ? L'\0' : m_ParamValue[idx];
|
return (idx < 0) ? NULL : m_ParamValue[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *ConfigFileLoader::ReadAsChar(const wchar_t *paramName)
|
const char *ConfigFileLoader::ReadAsChar(const wchar_t *paramName)
|
||||||
{
|
{
|
||||||
memset(m_ReadCharBuffer, 0, sizeof(m_ReadCharBuffer));
|
memset(m_ReadCharBuffer, 0, sizeof(m_ReadCharBuffer));
|
||||||
const wchar_t *value = ReadAsWChar(paramName);
|
const wchar_t *value = ReadAsWChar(paramName);
|
||||||
if(value == L'\0')
|
if(value == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user