TitleDownloaderのResult抜けを修正

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@614 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2012-01-27 05:26:41 +00:00
parent 6e20c3e0ac
commit 8a10b81820
11 changed files with 86 additions and 206 deletions

View File

@ -504,38 +504,32 @@ void WriteTwlData(enum common::TWL_PATH_INDEX path)
{
nn::fs::FileOutputStream list;
result = list.TryInitialize(common::FILE_LIST_PATHNAME, true);
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_VOID_SET_BOOL_IF_FAILED(result, s_IsExportSucceeded);
result = list.TryGetSize(&fileSize);
if (result.IsSuccess())
{
result = list.TryGetSize(&fileSize);
// 末尾に移動
result = list.TrySetPosition(fileSize);
if (result.IsSuccess())
{
// 末尾に移動
result = list.TrySetPosition(fileSize);
if (result.IsSuccess())
wchar_t archiveName[nn::fs::MAX_FILE_PATH_LENGTH];
::std::mbstowcs(archiveName, common::TWL_ARCHIVE_NAME_TABLE[path],
std::strlen(common::TWL_ARCHIVE_NAME_TABLE[path]) + 1);
std::wstring archiveString(archiveName);
if (!common::CopyDirectory(
NULL,
(archiveString + ::std::wstring(L"/")).c_str(),
(common::SDMC_ROOT_DIRECTORY_PATH + ::std::wstring(common::SD_TWL_ROOTNAME_TABLE[path])).c_str(),
buf, bufSize, true, &list, &s_FileListContext))
{
wchar_t archiveName[nn::fs::MAX_FILE_PATH_LENGTH];
::std::mbstowcs(archiveName, common::TWL_ARCHIVE_NAME_TABLE[path],
std::strlen(common::TWL_ARCHIVE_NAME_TABLE[path]) + 1);
std::wstring archiveString(archiveName);
if(!common::CopyDirectory(
NULL,
(archiveString + ::std::wstring(L"/")).c_str(),
(common::SDMC_ROOT_DIRECTORY_PATH + ::std::wstring(common::SD_TWL_ROOTNAME_TABLE[path])).c_str(),
buf, bufSize, true, &list, &s_FileListContext))
{
s_IsExportSucceeded = false;
return;
}
s_IsExportSucceeded = false;
return;
}
list.TryFlush();
list.Finalize();
}
}
else
{
s_IsExportSucceeded = false;
list.TryFlush();
list.Finalize();
}
}
@ -863,8 +857,7 @@ bool DeleteNimSaveData()
result = nn::fs::TryDeleteDirectoryRecursively(nimSaveDataPath.c_str());
if (result.IsFailure() && !nn::fs::ResultNotFound::Includes(result))
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
}
result = common::SdMountManager::Unmount();

View File

@ -1726,45 +1726,45 @@ nn::Result InitializeHardwareDependentSetting()
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_TOUCHPANEL),
&cfgCalData.touchPanelCfgData, sizeof(TouchPanelCfgData));
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_LCD, NN_CFG_LCD_CAL_FLICKER),
&cfgCalData.lcdFlickerCfgData, sizeof(LcdFlickerCfgData));
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_FCRAM, NN_CFG_FCRAM_CAL_DELAY), &cfgCalData.fcramCfgData,
sizeof(FcramCfgData));
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_RTC, NN_CFG_RTC_CAL_COMPENSATION),
&cfgCalData.rtcCfgData, sizeof(RtcCfgData));
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_GYROSCOPE),
&cfgCalData.gyroscopeCfgData, sizeof(GyroscopeCfgData));
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_ACCELEROMETER),
&cfgCalData.accelCfgData, sizeof(AccelCfgData));
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_CODEC, NN_CFG_CODEC_CAL), &cfgCalData.codecCfgData,
sizeof(CodecCfgData));
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_MCU, NN_CFG_MCU_SLIDE_VOLUME),
&cfgCalData.mcuSlideVolumeRangeCfgData, sizeof(McuSlideVolumeRangeCfgData));
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
NN_LOG("Set cfgCalData\n");
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
nn::cfg::CTR::init::ResetCameraCalibration();
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
nn::cfg::CTR::init::ResetAnalogStickCalibration();
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
return result;
}

View File

@ -219,18 +219,15 @@ nn::Result ConnectNetwork()
nn::ac::Config config;
result = nn::ac::CreateDefaultConfig(&config);
COMMON_LOGGER_RESULT_IF_FAILED(result);
NN_UTIL_RETURN_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
result = nn::ac::ConnectWithoutEula(config);
COMMON_LOGGER_RESULT_IF_FAILED(result);
NN_UTIL_RETURN_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
COMMON_LOGGER_DETAIL("Success nn::ac::ConnectWithoutEula\n");
result = PrintNetworkSetting();
COMMON_LOGGER_RESULT_IF_FAILED(result);
NN_UTIL_RETURN_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
return result;
}
@ -240,12 +237,10 @@ nn::Result InitializeInternal()
nn::Result result;
result = nn::ac::InitializeInternal();
COMMON_LOGGER_RESULT_IF_FAILED(result);
NN_UTIL_RETURN_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
result = ConnectNetwork();
COMMON_LOGGER_RESULT_IF_FAILED(result);
NN_UTIL_RETURN_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
return result;
}
@ -414,7 +409,6 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
COMMON_LOGGER_DETAIL("util::ac::Initialize\n");
result = InitializeInternal();
COMMON_LOGGER_RESULT_IF_FAILED(result);
NIM_SHOP_RESULT_CHECK(result);
switch(param.op)

View File

@ -353,7 +353,7 @@ void TitleDownloader::Start()
nn::nim::TitleConfig config;
s64 requiredSize;
m_Result = GetTitleConfig(m_ProgramIdList[i], &config, &requiredSize);
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
StartShopOperationSingle(SHOP_OPERATION_DOWNLOAD_TITLE, config);
WaitShopOperationAndFinalize();

View File

@ -622,36 +622,21 @@ bool VerifyMac(nn::fs::FileInputStream* sdFile, nn::fs::FileStream* nandFile, s6
while (1)
{
result = nandFile->TryRead(&readSize, buf, bufSize / 2);
if (result.IsFailure())
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
totalReadSize += readSize;
if (readSize == 0)
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
retValue = false;
retValue = CalculateAndCompareCmac(&context, sdCmac);
break;
}
else
{
totalReadSize += readSize;
if (readSize == 0)
{
retValue = CalculateAndCompareCmac(&context, sdCmac);
break;
}
else
{
u8 paddingSize = 0;
AddPkcsPadding(&paddingSize, reinterpret_cast<bit8*>(buf), bufSize / 2, &readSize);
result = swAesCtrContext.Encrypt(reinterpret_cast<bit8*>(buf) + bufSize / 2, buf, readSize);
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
context.Update(reinterpret_cast<bit8*>(buf) + bufSize / 2 , readSize);
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
retValue = false;
break;
}
}
u8 paddingSize = 0;
AddPkcsPadding(&paddingSize, reinterpret_cast<bit8*>(buf), bufSize / 2, &readSize);
result = swAesCtrContext.Encrypt(reinterpret_cast<bit8*>(buf) + bufSize / 2, buf, readSize);
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
context.Update(reinterpret_cast<bit8*>(buf) + bufSize / 2, readSize);
}
}
nandFile->Finalize();

View File

@ -188,7 +188,7 @@ void SaveDataMover::CalculateExportSystemSaveDataSize()
if(m_Result.IsFailure())
{
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
continue;
}
@ -251,7 +251,7 @@ void SaveDataMover::ExportSystemSaveData(void* buf, size_t bufSize, u64* progres
if(m_Result.IsFailure())
{
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
continue;
}
NN_LOG("fileSize = %lld\n", input.GetSize());
@ -267,7 +267,7 @@ void SaveDataMover::ExportSystemSaveData(void* buf, size_t bufSize, u64* progres
if(m_Result.IsFailure())
{
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
continue;
}
@ -278,7 +278,7 @@ void SaveDataMover::ExportSystemSaveData(void* buf, size_t bufSize, u64* progres
if(m_Result.IsFailure())
{
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
continue;
}
}
@ -391,7 +391,7 @@ void SaveDataMover::ImportSystemSaveData(void* buf, size_t bufSize, u64* progres
if(m_Result.IsFailure())
{
COMMON_LOGGER_WARN("Can't Import: %08x\n", id);
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
continue;
}
@ -402,7 +402,7 @@ void SaveDataMover::ImportSystemSaveData(void* buf, size_t bufSize, u64* progres
if(m_Result.IsFailure())
{
COMMON_LOGGER_WARN("Can't Import: %08x\n", id);
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
continue;
}
@ -414,7 +414,7 @@ void SaveDataMover::ImportSystemSaveData(void* buf, size_t bufSize, u64* progres
if(m_Result.IsFailure())
{
COMMON_LOGGER_WARN("Can't Import: %08x\n", id);
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
continue;
}
}

View File

@ -376,26 +376,18 @@ nn::Result InitializeNetwork(void)
nn::ac::Config config;
result = nn::ac::InitializeInternal();
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
// 接続要求用のパラメータを作成
result = nn::ac::CreateDefaultConfig(&config);
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return result;
}
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
// デバッグ用に接続テストを無効化
nn::ac::DebugSetNetworkArea(&config, nn::ac::NETWORK_AREA_LAN);
// 接続要求を発行
result = nn::ac::ConnectWithoutEula(config);
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return result;
}
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
return nn::ResultSuccess();
}
@ -406,10 +398,10 @@ nn::Result FinalizeNetwork(void)
// 接続要求用のパラメータを作成
result = nn::ac::Close();
NN_UTIL_RETURN_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
result = nn::ac::FinalizeInternal();
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
return nn::ResultSuccess();
}

View File

@ -102,24 +102,16 @@ bool AddCmac(const wchar_t * from_path, void* buf, const size_t bufSize)
bool ret_value = true;
nn::Result result = from_dir.TryInitialize(from_path);
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
// 出力先ディレクトリを削除してから作成
const wchar_t* CMAC_DIR = L"CmacAdded";
targetDirectory << from_path << CMAC_DIR;
result = nn::fs::TryDeleteDirectoryRecursively(targetDirectory.str().c_str());
COMMON_LOGGER_RESULT_IF_FAILED(result);
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
result = nn::fs::TryCreateDirectory(targetDirectory.str().c_str());
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
while (1)
{

View File

@ -160,11 +160,7 @@ bool CalculateAndCompareCmac(nn::crypto::Sha256Context* context, bit8* sdCmac)
context->Finalize();
result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, sizeof(sha256Hash), common::cmacKey);
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
if(std::memcmp(cmac, sdCmac, sizeof(cmac)) != 0)
{
@ -198,12 +194,7 @@ bool DecryptDirectory(const wchar_t * from_path, const wchar_t* to_path, void* b
bool ret_value = true;
nn::Result result = from_dir.TryInitialize(from_path);
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
while (1)
{
@ -266,13 +257,8 @@ bool DecryptDirectory(const wchar_t * from_path, const wchar_t* to_path, void* b
result = sdFile.TryGetSize(&sdFileSize);
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
ret_value = false;
break;
}
else
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
{
bit8 sdCmac[nn::crypto::AES_CMAC_MAC_SIZE];
@ -286,20 +272,10 @@ bool DecryptDirectory(const wchar_t * from_path, const wchar_t* to_path, void* b
s32 readSize;
// ハッシュを取得する
result = sdFile.TrySetPosition(sdFileSize - nn::crypto::AES_CMAC_MAC_SIZE);
if (result.IsSuccess())
{
result = sdFile.TryRead(&readSize, sdCmac, sizeof(sdCmac));
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
}
}
else
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
result = sdFile.TryRead(&readSize, sdCmac, sizeof(sdCmac));
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
sdFile.SetPosition(0);
@ -324,16 +300,12 @@ bool DecryptDirectory(const wchar_t * from_path, const wchar_t* to_path, void* b
BackupDataHeader dec;
std::memset(&enc, 0, sizeof(enc));
std::memset(&dec, 0, sizeof(dec));
sdFile.TryRead(&readSize, &enc, sizeof(enc));
COMMON_LOGGER_RESULT_IF_FAILED(result);
if(result.IsFailure())
{
ret_value = false;
break;
}
result = sdFile.TryRead(&readSize, &enc, sizeof(enc));
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
totalReadSize += readSize;
context.Update(&enc, sizeof(enc));
swAesCtrContext.Decrypt(&dec, &enc, sizeof(enc));
result = swAesCtrContext.Decrypt(&dec, &enc, sizeof(enc));
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
// 書き込み対象ファイル作成
s32 writeSize;
@ -347,15 +319,9 @@ bool DecryptDirectory(const wchar_t * from_path, const wchar_t* to_path, void* b
while (1)
{
result = sdFile.TryRead(&readSize, buf, bufSize / 2);
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
totalReadSize += readSize;
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
ret_value = false;
break;
}
else
{
if (readSize == 0)
{

View File

@ -147,11 +147,7 @@ bool CalculateAndCompareCmac(nn::crypto::Sha256Context* context, bit8* sdCmac)
context->Finalize();
result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, sizeof(sha256Hash), common::cmacKey);
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
if(std::memcmp(cmac, sdCmac, sizeof(cmac)) != 0)
{
@ -184,12 +180,7 @@ bool VerifyDirectory(const wchar_t * from_path, void* buf,
bool ret_value = true;
nn::Result result = from_dir.TryInitialize(from_path);
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
while (1)
{
@ -237,13 +228,7 @@ bool VerifyDirectory(const wchar_t * from_path, void* buf,
}
result = sdFile.TryGetSize(&sdFileSize);
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
ret_value = false;
break;
}
else
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
{
bit8 sdCmac[nn::crypto::AES_CMAC_MAC_SIZE];
@ -257,20 +242,9 @@ bool VerifyDirectory(const wchar_t * from_path, void* buf,
s32 readSize;
// ハッシュを取得する
result = sdFile.TrySetPosition(sdFileSize - nn::crypto::AES_CMAC_MAC_SIZE);
if (result.IsSuccess())
{
result = sdFile.TryRead(&readSize, sdCmac, sizeof(sdCmac));
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
}
}
else
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
result = sdFile.TryRead(&readSize, sdCmac, sizeof(sdCmac));
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
sdFile.SetPosition(0);
@ -295,13 +269,8 @@ bool VerifyDirectory(const wchar_t * from_path, void* buf,
BackupDataHeader dec;
std::memset(&enc, 0, sizeof(enc));
std::memset(&dec, 0, sizeof(dec));
sdFile.TryRead(&readSize, &enc, sizeof(enc));
COMMON_LOGGER_RESULT_IF_FAILED(result);
if(result.IsFailure())
{
ret_value = false;
break;
}
result = sdFile.TryRead(&readSize, &enc, sizeof(enc));
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
totalReadSize += readSize;
context.Update(&enc, sizeof(enc));
swAesCtrContext.Decrypt(&dec, &enc, sizeof(enc));
@ -309,15 +278,9 @@ bool VerifyDirectory(const wchar_t * from_path, void* buf,
while (1)
{
result = sdFile.TryRead(&readSize, buf, bufSize);
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
totalReadSize += readSize;
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
ret_value = false;
break;
}
else
{
if (readSize == 0)
{

View File

@ -155,12 +155,7 @@ bool EncryptDirectory(const wchar_t * from_path, void* buf,
bool ret_value = true;
nn::Result result = from_dir.TryInitialize(from_path);
if (result.IsFailure())
{
COMMON_LOGGER_RESULT_IF_FAILED(result);
return false;
}
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
while (1)
{