Merge pull request #2343 from lioncash/todo

file_sys/program_metadata: Remove obsolete TODOs
master
bunnei 2019-04-05 23:35:54 +07:00 committed by GitHub
commit b8fbd125e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 15 deletions

@ -3,7 +3,6 @@
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <cstddef> #include <cstddef>
#include <cstring>
#include <vector> #include <vector>
#include "common/logging/log.h" #include "common/logging/log.h"
@ -17,28 +16,30 @@ ProgramMetadata::ProgramMetadata() = default;
ProgramMetadata::~ProgramMetadata() = default; ProgramMetadata::~ProgramMetadata() = default;
Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) { Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) {
std::size_t total_size = static_cast<std::size_t>(file->GetSize()); const std::size_t total_size = file->GetSize();
if (total_size < sizeof(Header)) if (total_size < sizeof(Header)) {
return Loader::ResultStatus::ErrorBadNPDMHeader; return Loader::ResultStatus::ErrorBadNPDMHeader;
}
// TODO(DarkLordZach): Use ReadObject when Header/AcidHeader becomes trivially copyable. if (sizeof(Header) != file->ReadObject(&npdm_header)) {
std::vector<u8> npdm_header_data = file->ReadBytes(sizeof(Header));
if (sizeof(Header) != npdm_header_data.size())
return Loader::ResultStatus::ErrorBadNPDMHeader; return Loader::ResultStatus::ErrorBadNPDMHeader;
std::memcpy(&npdm_header, npdm_header_data.data(), sizeof(Header)); }
std::vector<u8> acid_header_data = file->ReadBytes(sizeof(AcidHeader), npdm_header.acid_offset); if (sizeof(AcidHeader) != file->ReadObject(&acid_header, npdm_header.acid_offset)) {
if (sizeof(AcidHeader) != acid_header_data.size())
return Loader::ResultStatus::ErrorBadACIDHeader; return Loader::ResultStatus::ErrorBadACIDHeader;
std::memcpy(&acid_header, acid_header_data.data(), sizeof(AcidHeader)); }
if (sizeof(AciHeader) != file->ReadObject(&aci_header, npdm_header.aci_offset)) if (sizeof(AciHeader) != file->ReadObject(&aci_header, npdm_header.aci_offset)) {
return Loader::ResultStatus::ErrorBadACIHeader; return Loader::ResultStatus::ErrorBadACIHeader;
}
if (sizeof(FileAccessControl) != file->ReadObject(&acid_file_access, acid_header.fac_offset)) if (sizeof(FileAccessControl) != file->ReadObject(&acid_file_access, acid_header.fac_offset)) {
return Loader::ResultStatus::ErrorBadFileAccessControl; return Loader::ResultStatus::ErrorBadFileAccessControl;
if (sizeof(FileAccessHeader) != file->ReadObject(&aci_file_access, aci_header.fah_offset)) }
if (sizeof(FileAccessHeader) != file->ReadObject(&aci_file_access, aci_header.fah_offset)) {
return Loader::ResultStatus::ErrorBadFileAccessHeader; return Loader::ResultStatus::ErrorBadFileAccessHeader;
}
aci_kernel_capabilities.resize(aci_header.kac_size / sizeof(u32)); aci_kernel_capabilities.resize(aci_header.kac_size / sizeof(u32));
const u64 read_size = aci_header.kac_size; const u64 read_size = aci_header.kac_size;

@ -58,7 +58,6 @@ public:
void Print() const; void Print() const;
private: private:
// TODO(DarkLordZach): BitField is not trivially copyable.
struct Header { struct Header {
std::array<char, 4> magic; std::array<char, 4> magic;
std::array<u8, 8> reserved; std::array<u8, 8> reserved;
@ -85,7 +84,6 @@ private:
static_assert(sizeof(Header) == 0x80, "NPDM header structure size is wrong"); static_assert(sizeof(Header) == 0x80, "NPDM header structure size is wrong");
// TODO(DarkLordZach): BitField is not trivially copyable.
struct AcidHeader { struct AcidHeader {
std::array<u8, 0x100> signature; std::array<u8, 0x100> signature;
std::array<u8, 0x100> nca_modulus; std::array<u8, 0x100> nca_modulus;