From 92a98a8b19ab8b6f9eefe3b2e8e80f957444d65e Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 19 Sep 2018 13:45:29 -0400 Subject: xts_archive: Amend initializer order of NAX's constructor Orders the initializer list in the same order the members would be initialized. Avoids compiler warnings. --- src/core/file_sys/xts_archive.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/core/file_sys/xts_archive.cpp') diff --git a/src/core/file_sys/xts_archive.cpp b/src/core/file_sys/xts_archive.cpp index 0173f71c1..55257da2e 100644 --- a/src/core/file_sys/xts_archive.cpp +++ b/src/core/file_sys/xts_archive.cpp @@ -45,7 +45,7 @@ static bool CalculateHMAC256(Destination* out, const SourceKey* key, std::size_t return true; } -NAX::NAX(VirtualFile file_) : file(std::move(file_)), header(std::make_unique()) { +NAX::NAX(VirtualFile file_) : header(std::make_unique()), file(std::move(file_)) { std::string path = FileUtil::SanitizePath(file->GetFullPath()); static const std::regex nax_path_regex("/registered/(000000[0-9A-F]{2})/([0-9A-F]{32})\\.nca", std::regex_constants::ECMAScript | @@ -65,7 +65,7 @@ NAX::NAX(VirtualFile file_) : file(std::move(file_)), header(std::make_unique nca_id) - : file(std::move(file_)), header(std::make_unique()) { + : header(std::make_unique()), file(std::move(file_)) { Core::Crypto::SHA256Hash hash{}; mbedtls_sha256(nca_id.data(), nca_id.size(), hash.data(), 0); status = Parse(fmt::format("/registered/000000{:02X}/{}.nca", hash[0], -- cgit v1.2.3 From 2752183883604673e5058a3a6f62defcdca49a72 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 19 Sep 2018 14:16:22 -0400 Subject: xts_archive: Make AsNCA() return a std::unique_ptr instead of a std::shared_ptr std::shared_ptr isn't strictly necessary here and is only ever used in contexts where the object doesn't depend on being shared. This also makes the interface more flexible, as it's possible to create a std::shared_ptr from a std::unique_ptr (std::shared_ptr has a constructor that accepts a std::unique_ptr), but not the other way around. --- src/core/file_sys/xts_archive.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/core/file_sys/xts_archive.cpp') diff --git a/src/core/file_sys/xts_archive.cpp b/src/core/file_sys/xts_archive.cpp index 55257da2e..6935d2fa2 100644 --- a/src/core/file_sys/xts_archive.cpp +++ b/src/core/file_sys/xts_archive.cpp @@ -138,9 +138,9 @@ VirtualFile NAX::GetDecrypted() const { return dec_file; } -std::shared_ptr NAX::AsNCA() const { +std::unique_ptr NAX::AsNCA() const { if (type == NAXContentType::NCA) - return std::make_shared(GetDecrypted()); + return std::make_unique(GetDecrypted()); return nullptr; } -- cgit v1.2.3 From 2e5f0e5024fac21808de12fd9008feb85dc2f02c Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 19 Sep 2018 14:23:11 -0400 Subject: xts_archive: Remove unused variables from CalculateHMAC256() These variables aren't used, which still has an impact, as std::vector cannot be optimized away by the compiler (it's constructor and destructor are both non-trivial), so this was just wasting memory. --- src/core/file_sys/xts_archive.cpp | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/core/file_sys/xts_archive.cpp') diff --git a/src/core/file_sys/xts_archive.cpp b/src/core/file_sys/xts_archive.cpp index 6935d2fa2..e937d1403 100644 --- a/src/core/file_sys/xts_archive.cpp +++ b/src/core/file_sys/xts_archive.cpp @@ -30,9 +30,6 @@ static bool CalculateHMAC256(Destination* out, const SourceKey* key, std::size_t mbedtls_md_context_t context; mbedtls_md_init(&context); - const auto key_f = reinterpret_cast(key); - const std::vector key_v(key_f, key_f + key_length); - if (mbedtls_md_setup(&context, mbedtls_md_info_from_type(MBEDTLS_MD_SHA256), 1) || mbedtls_md_hmac_starts(&context, reinterpret_cast(key), key_length) || mbedtls_md_hmac_update(&context, reinterpret_cast(data), data_length) || -- cgit v1.2.3