From 814a2a199bcdf215fbb40382b9aebb459544a69d Mon Sep 17 00:00:00 2001 From: N2614 Date: Thu, 24 Nov 2011 01:14:37 +0000 Subject: [PATCH] =?UTF-8?q?cecd=E3=81=AE=E3=82=B7=E3=82=B9=E3=83=86?= =?UTF-8?q?=E3=83=A0=E3=82=BB=E3=83=BC=E3=83=96=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E3=82=92=E8=AA=AD=E3=81=BF=E5=8F=96=E3=81=A3=E3=81=A6SD?= =?UTF-8?q?=E3=81=AB=E6=9B=B8=E3=81=8D=E8=BE=BC=E3=82=80=E3=82=88=E3=81=86?= =?UTF-8?q?=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@522 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../sources/ConsoleBackup/Exporter.cpp | 10 +++++++--- .../sources/ConsoleBackup/HeapChecker.cpp | 13 +++++++++++-- .../sources/ConsoleBackup/HeapChecker.h | 7 +++++-- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/branches/work/VerificationFailed/sources/ConsoleBackup/Exporter.cpp b/branches/work/VerificationFailed/sources/ConsoleBackup/Exporter.cpp index 3fc9a1a..7fcd152 100644 --- a/branches/work/VerificationFailed/sources/ConsoleBackup/Exporter.cpp +++ b/branches/work/VerificationFailed/sources/ConsoleBackup/Exporter.cpp @@ -758,7 +758,7 @@ nn::Result WriteMcuRtcData(common::HardwareStateManager& manager) return nn::ResultSuccess(); } -void ExportThreadFunc() +void ExportThreadFunc(std::wstring saveRoot) { nn::Result result; s_IsExportSucceeded = true; @@ -781,7 +781,7 @@ void ExportThreadFunc() { NN_LOG("HeapCheck Start : %lld\n", nn::os::Tick::GetSystemCurrent().ToTimeSpan().GetMilliSeconds()); HeapChecker heapChecker; - result = heapChecker.Check(buf, bufSize); + result = heapChecker.Check(saveRoot, buf, bufSize); if(result.IsFailure()) { s_IsExportSucceeded = false; @@ -861,7 +861,11 @@ nn::Result WriteSaveData(::std::string& sysSaveRoot) COMMON_LOGGER("Export NAND Data Start...\n"); // SDにコピーするためのスレッドの作成 - s_ExportThread.Start(ExportThreadFunc, s_ExportThreadStack); + s_ExportThread.Start( + ExportThreadFunc, + ::std::wstring(common::NAND_DATA_ROOT_PATHNAME_WITH_SLASH) + ::std::wstring(s_RootName) + + ::std::wstring(L"/"), s_ExportThreadStack + ); return result; } diff --git a/branches/work/VerificationFailed/sources/ConsoleBackup/HeapChecker.cpp b/branches/work/VerificationFailed/sources/ConsoleBackup/HeapChecker.cpp index 754fe6c..adbb211 100644 --- a/branches/work/VerificationFailed/sources/ConsoleBackup/HeapChecker.cpp +++ b/branches/work/VerificationFailed/sources/ConsoleBackup/HeapChecker.cpp @@ -1,4 +1,4 @@ -/*---------------------------------------------------------------------------* +/*---------------------------------------------------------------------------* Project: Horizon File: HeapChecker.cpp @@ -33,7 +33,7 @@ HeapChecker::~HeapChecker() // TODO Auto-generated destructor stub } -nn::Result HeapChecker::Check(void* buf, size_t& bufSize) +nn::Result HeapChecker::Check(std::wstring saveRoot, void* buf, size_t& bufSize) { nn::Result result; common::SdReaderWriter sdReaderWriter; @@ -47,6 +47,15 @@ nn::Result HeapChecker::Check(void* buf, size_t& bufSize) COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result); } + // NANDから読み込む + nn::fs::FileInputStream file; + result = file.TryInitialize(std::wstring(saveRoot + std::wstring(L"sysdata/00010026/00000000")).c_str()); + COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result); + + s32 readSize; + result = file.TryRead(&readSize, buf, bufSize); + COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result); + result = sdReaderWriter.WriteBufWithCmac(HEAP_CHECKER_FILE, buf, bufSize - nn::crypto::SwAesCtrContext::AES_BLOCK_LENGTH); COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result); diff --git a/branches/work/VerificationFailed/sources/ConsoleBackup/HeapChecker.h b/branches/work/VerificationFailed/sources/ConsoleBackup/HeapChecker.h index eafccf6..dd0e983 100644 --- a/branches/work/VerificationFailed/sources/ConsoleBackup/HeapChecker.h +++ b/branches/work/VerificationFailed/sources/ConsoleBackup/HeapChecker.h @@ -1,4 +1,4 @@ -/*---------------------------------------------------------------------------* +/*---------------------------------------------------------------------------* Project: Horizon File: HeapChecker.h @@ -16,6 +16,8 @@ #ifndef HEAPCHECKER_H_ #define HEAPCHECKER_H_ +#include + #include namespace ConsoleBackup @@ -38,6 +40,7 @@ public: データが正しく書き込めていない場合、バッファサイズを半分にして繰り返しチェックします。 正しく書き込めた最大のbufSizeが設定されます。 + @param[in] saveRoot NANDセーブデータのルートディレクトリのパス @param[in] buf バッファ @param[inout] buSize バッファサイズ @@ -45,7 +48,7 @@ public: @return ResultSuccess 上記以外 */ - nn::Result Check(void* buf, size_t& bufSize); + nn::Result Check(std::wstring saveRoot, void* buf, size_t& bufSize); }; } /* namespace ConsoleBackup */