From 73512b750f9bd46b70b9ce61d6cf9879eba9fe16 Mon Sep 17 00:00:00 2001 From: N2614 Date: Tue, 15 Feb 2011 01:55:17 +0000 Subject: [PATCH] =?UTF-8?q?ReadAsChar=E3=81=AE=E6=88=BB=E3=82=8A=E5=80=A4?= =?UTF-8?q?=E3=82=92=E5=BF=85=E3=81=9ANULL=E7=B5=82=E7=AB=AF=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=20=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E9=A0=85=E7=9B=AE=E6=95=B0=E3=81=8C=E4=B8=8A=E9=99=90=E3=82=92?= =?UTF-8?q?=E8=B6=85=E3=81=88=E3=81=9F=E3=82=89=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=81=AB=E3=81=99=E3=82=8B=20=E4=B8=8D=E6=AD=A3=E3=81=AADNS?= =?UTF-8?q?=E3=82=A2=E3=83=89=E3=83=AC=E3=82=B9=E3=82=92=E5=A4=89=E6=8F=9B?= =?UTF-8?q?=E3=81=97=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@54 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../ConsoleRestore/Importer.cpp | 81 +++++++++------- .../common/configLoader.cpp | 96 ++++++++++--------- .../common/configLoader.h | 1 - 3 files changed, 97 insertions(+), 81 deletions(-) diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp index d091daa..2b6eeaa 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/Importer.cpp @@ -1036,55 +1036,62 @@ bool ReadSetting() { const char* dnsPrimary = configfileLoader.ReadAsChar(L"DNS_PRI"); // プライマリDNS - if(!networkSetting.ip.autoDNSSetting && dnsPrimary == NULL) + if(!networkSetting.ip.autoDNSSetting) { - COMMON_LOGGER("DNS_PRI: is missing\n"); - retval = false; - } - else - { - u8 dns[4]; - nn::socket::InAddr addr; - if (1 == nn::socket::InetAtoN(dnsPrimary, &addr)) + if (dnsPrimary == NULL) { - dns[3] = (0xff & (addr.addr >> 24)); - dns[2] = (0xff & (addr.addr >> 16)); - dns[1] = (0xff & (addr.addr >> 8)); - dns[0] = (0xff & (addr.addr)); - } - std::memcpy(networkSetting.ip.dns[0], dns, 4); - COMMON_LOGGER("DNS_PRI = %03d.%03d.%03d.%03d\n", networkSetting.ip.dns[0][0], - networkSetting.ip.dns[0][1], - networkSetting.ip.dns[0][2], - networkSetting.ip.dns[0][3]); + COMMON_LOGGER("DNS_PRI: is missing\n"); + retval = false; + } + else + { + u8 dns[4]; + nn::socket::InAddr addr; + if (1 == nn::socket::InetAtoN(dnsPrimary, &addr)) + { + dns[3] = (0xff & (addr.addr >> 24)); + dns[2] = (0xff & (addr.addr >> 16)); + dns[1] = (0xff & (addr.addr >> 8)); + dns[0] = (0xff & (addr.addr)); + } + std::memcpy(networkSetting.ip.dns[0], dns, 4); + COMMON_LOGGER("DNS_PRI = %03d.%03d.%03d.%03d\n", networkSetting.ip.dns[0][0], + networkSetting.ip.dns[0][1], + networkSetting.ip.dns[0][2], + networkSetting.ip.dns[0][3]); + + } } } { const char* dnsSecondary = configfileLoader.ReadAsChar(L"DNS_SEC"); // セカンダリDNS - if(!networkSetting.ip.autoDNSSetting && dnsSecondary == NULL) + if(!networkSetting.ip.autoDNSSetting) { - COMMON_LOGGER("DNS_SEC: is missing\n"); - retval = false; - } - else - { - u8 dns[4]; - nn::socket::InAddr addr; - if (1 == nn::socket::InetAtoN(dnsSecondary, &addr)) + if(dnsSecondary == NULL) { - dns[3] = (0xff & (addr.addr >> 24)); - dns[2] = (0xff & (addr.addr >> 16)); - dns[1] = (0xff & (addr.addr >> 8)); - dns[0] = (0xff & (addr.addr)); + COMMON_LOGGER("DNS_SEC: is missing\n"); + retval = false; } - std::memcpy(networkSetting.ip.dns[1], dns, 4); - COMMON_LOGGER("DNS_SEC = %03d.%03d.%03d.%03d\n", networkSetting.ip.dns[1][0], - networkSetting.ip.dns[1][1], - networkSetting.ip.dns[1][2], - networkSetting.ip.dns[1][3]); + else + { + u8 dns[4]; + nn::socket::InAddr addr; + if (1 == nn::socket::InetAtoN(dnsSecondary, &addr)) + { + dns[3] = (0xff & (addr.addr >> 24)); + dns[2] = (0xff & (addr.addr >> 16)); + dns[1] = (0xff & (addr.addr >> 8)); + dns[0] = (0xff & (addr.addr)); + } + std::memcpy(networkSetting.ip.dns[1], dns, 4); + COMMON_LOGGER("DNS_SEC = %03d.%03d.%03d.%03d\n", networkSetting.ip.dns[1][0], + networkSetting.ip.dns[1][1], + networkSetting.ip.dns[1][2], + networkSetting.ip.dns[1][3]); + } } } diff --git a/trunk/ConsoleDataMigration/common/configLoader.cpp b/trunk/ConsoleDataMigration/common/configLoader.cpp index 24dfdcf..c32c04a 100644 --- a/trunk/ConsoleDataMigration/common/configLoader.cpp +++ b/trunk/ConsoleDataMigration/common/configLoader.cpp @@ -65,56 +65,64 @@ Result ConfigFileLoader::ParseData() { switch (m_Buffer[pos]) { - case L'"': - { - inEscape = !inEscape; - } - break; - - case L'#': - { - inComment = true; - } - break; - - case L':': - { - if(inEscape || inComment) + case L'"': { - break; + inEscape = !inEscape; + } + break; + + case L'#': + { + inComment = true; + } + break; + + case L':': + { + if (inEscape || inComment) + { + break; + } + + if (inSettingKeyValue) + { + break; + } + else + { + inSettingKeyValue = true; + } + m_Buffer[pos] = L'\0'; + m_ParamValue[m_ParamNum++] = &(m_Buffer[pos + 1]); + } - if(inSettingKeyValue) + break; + case L'\r': + case L'\n': { - break; + if (inComment) + { + 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'; } - else - { - inSettingKeyValue = true; - } - m_Buffer[pos] = L'\0'; - m_ParamValue[m_ParamNum++] = &(m_Buffer[pos + 1]); + break; + } - break; - case L'\r': - case L'\n': + if (PARAM_MAX_NUM <= m_ParamNum) { - if(inComment) - { - 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'; - } - break; - + NN_TLOG_("Too Many Params\n"); + return Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_TOO_LARGE); } pos++; } @@ -158,7 +166,9 @@ const char *ConfigFileLoader::ReadAsChar(const wchar_t *paramName) { return NULL; } - wcstombs(m_ReadCharBuffer, value, wcslen(value)); + wcstombs(m_ReadCharBuffer, value, sizeof(m_ReadCharBuffer)); + // NULL終端する + m_ReadCharBuffer[sizeof(m_ReadCharBuffer) - 1] = '\0'; return m_ReadCharBuffer; } diff --git a/trunk/ConsoleDataMigration/common/configLoader.h b/trunk/ConsoleDataMigration/common/configLoader.h index 560e142..67e1edf 100644 --- a/trunk/ConsoleDataMigration/common/configLoader.h +++ b/trunk/ConsoleDataMigration/common/configLoader.h @@ -11,7 +11,6 @@ namespace common class ConfigFileLoader { private: - static const int PARAM_NAME_MAX_STRING_LENGTH = 16; static const int PARAM_VALUE_MAX_STRING_LENGTH = 128; static const int PARAM_MAX_NUM = 64;