aboutsummaryrefslogtreecommitdiff
path: root/src/core/file_sys
AgeCommit message (Collapse)Author
2018-10-12Merge pull request #1409 from DarkLordZach/key-derivationbunnei
crypto: Add support for full key derivation
2018-10-09Merge pull request #1461 from lioncash/warnbunnei
ips_layer: Silence truncation and conversion warnings
2018-10-09Merge pull request #1464 from lioncash/uniquebunnei
patch_manager: Return a std::unique_ptr from ParseControlNCA() and GetControlMetadata() instead of a std::shared_ptr
2018-10-09patch_manager: Return a std::unique_ptr from ParseControlNCA() and ↵Lioncash
GetControlMetadata() instead of a std::shared_ptr Neither of these functions require the use of shared ownership of the returned pointer. This makes it more difficult to create reference cycles with, and makes the interface more generic, as std::shared_ptr instances can be created from a std::unique_ptr, but the vice-versa isn't possible. This also alters relevant functions to take NCA arguments by const reference rather than a const reference to a std::shared_ptr. These functions don't alter the ownership of the memory used by the NCA instance, so we can make the interface more generic by not assuming anything about the type of smart pointer the NCA is contained within and make it the caller's responsibility to ensure the supplied NCA is valid.
2018-10-09ips_layer: Avoid constructing std::vector instances where not necessaryLioncash
We can just compare the existing std::vector instance with a constexpr std::array containing the desired match. This is lighter resource-wise, as we don't need to allocate on the heap.
2018-10-09ips_layer: Remove unnecessary explicit std::pair constructor in std::arrayLioncash
Makes the layout of the array consistent, by making all elements match, instead of special-casing the first one.
2018-10-09ips_layer: Add missing includesLioncash
Adds missing includes to prevent potential compilation issues in the future. Also moves the definition of a struct into the cpp file, so that some includes don't need to be introduced within the header.
2018-10-09ips_layer: std::move data within PatchIPS() and Apply()Lioncash
We don't need to make a copy of the read data, so we can std::move it into the make_shared call here.
2018-10-09ips_layer: Silence truncation and conversion warningsLioncash
Makes type conversions explicit to avoid compiler warnings.
2018-10-08Merge pull request #1423 from DarkLordZach/romfs-file-extsbunnei
fsmitm_romfsbuild: Add support for stubbing and IPS patches in LFS
2018-10-08Merge pull request #1424 from DarkLordZach/ips-witchbunnei
ips_layer: Add support for IPSwitch executable patches
2018-10-07vfs: Move forward declarations to separate fileZach Hilman
2018-10-05romfs_factory: Extract packed update setter to new functionZach Hilman
2018-10-05patch_manager: Add support for NSP packed updatesZach Hilman
Reads as Update (NSP) in add-ons
2018-10-05patch_manager: Add support for packed updatesZach Hilman
Will prefer any installed update over the packed version.
2018-10-04patch_manager: Avoid romfs_ext requirement for patchingZach Hilman
2018-10-04fsmitm_romfsbuild: Extract stubs and IPS to romfs_ext dirZach Hilman
2018-10-04fsmitm_romfsbuild: Add support for stubbing and IPS patches in LFSZach Hilman
2018-10-04ips_layer: Fix inaccuracies with comments and flagsZach Hilman
Specifically bugs/crashes that arise when putting them in positions that are legal but not typical, such as midline, between patch data, or between patch records.
2018-10-04ips_layer: Deduplicate resource usageZach Hilman
2018-10-04ips_layer: Add support for escape sequences and midline commentsZach Hilman
More accurately follows IPSwitch specification.
2018-10-04patch_manager: Add support for IPSwitch format patchesZach Hilman
2018-10-04ips_layer: Add IPSwitchCompiler to process IPSwitch formatZach Hilman
2018-10-04Merge pull request #1415 from DarkLordZach/ipsbunnei
file_sys: Add support for loading IPS patches
2018-10-03Merge pull request #1436 from lioncash/viewbunnei
submission_package: Cleanup and bug fixes
2018-10-03Merge pull request #1435 from lioncash/xcibunnei
card_image: Ensure program_nca_status is always initialized
2018-10-03submission_package: Avoid dangling std::string_view within SetTicketKeys()Lioncash
GetName() returns a std::string by value, not by reference, so after the std::string_view is constructed, it's not well defined to actually execute any member functions of std::string_view that attempt to access the data, as the std::string has already been destroyed. Instead, we can just use a std::string and erase the last four characters.
2018-10-03submission_package: Correct location of null check within SetTicketKeys()Lioncash
If a ticket file was ever a null pointer, we'd cause a null pointer dereference, as we were calling GetExtension() on the pointer instance.
2018-10-03submission_package: Use std::string's rfind() when looking for the extension ↵Lioncash
in InitializeExeFSAndRomFS() When searching for a file extension, it's generally preferable to begin the search at the end of the string rather than the beginning, as the whole string isn't going to be walked just to check for something at the end of it.
2018-10-03submission_package: Ensure the 'extracted' member variable is always initializedLioncash
If an error occurs when constructing the PartitionFilesystem instance, the constructor would be exited early, which wouldn't initialize the extracted data member, making it possible for other code to perform an uninitialized read by calling the public IsExtractedType() member function. This prevents that.
2018-10-03submission_package: Move ExeFS and RomFS initialization to its own functionLioncash
Like the other two bits of factored out code, this can also be put within its own function. We can also modify the code so that it accepts a const reference to a std::vector of files, this way, we can deduplicate the file retrieval. Now the constructor for NSP isn't a combination of multiple behaviors in one spot. It's nice and separate.
2018-10-03submission_package: Move NCA reading code to its own functionLioncash
This too, is completely separate behavior from what is in the constructor, so we can move this to its own isolated function to keep everything self-contained.
2018-10-03submission_package: Move ticket key setting to its own functionLioncash
This behavior is entirely independent of the surrounding code, so it can be put in its own function to keep the behavior separate.
2018-10-03submission_package: Invert conditionals within NSP's constructor to reduce ↵Lioncash
nesting We can use early continues here to reduce the amount of nesting.
2018-10-02card_image: Ensure program_nca_status is always initializedLioncash
If any of the error paths before the NCA retrieval are taken, it'll result in program_nca_status being left in an inconsistent state. So we initialize it by default with a value indicating an error.
2018-10-02nso: Optimize loading of IPS patchesZach Hilman
Avoid resource-heavy classes and remove quasi-duplicated code.
2018-10-01patch_manager: Add PatchNSO functionZach Hilman
While PatchExeFS operated on the entire directory, this function operates on the uncompressed NSO. Avoids copying decompression code to PatchManager.
2018-10-01patch_manager: Use strings for patch type instead of enumZach Hilman
2018-10-01file_sys: Implement function to apply IPS patchesZach Hilman
2018-09-30aoc_u: Extract AccumulateAOCTitleIDs to separate functionZach Hilman
2018-09-30aoc_u: Implement GetAddOnContentBaseIdZach Hilman
Command #5
2018-09-30romfs_factory: Read from all locations with StorageId NoneZach Hilman
Previous behavior was to assert. Seems to mirror expected game behavior.
2018-09-30patch_manager: Add DLC recognition to PatchManagerZach Hilman
2018-09-30kernel/process: Make data member variables privateLioncash
Makes the public interface consistent in terms of how accesses are done on a process object. It also makes it slightly nicer to reason about the logic of the process class, as we don't want to expose everything to external code.
2018-09-29Merge pull request #1395 from lioncash/vmbunnei
process/vm_manager: Initial modifications to load NPDM metadata
2018-09-26fsmitm_romfsbuild: std::move std::vector instances in Build()Lioncash
Avoids making copies of large std::vector instances where it's trivially avoidable to do so.
2018-09-26fsmitm_romfsbuild: Replace manual value aligning with Common::AlignUp()Lioncash
Theres no need to do explicit bitwise arithmetic here, when we have a function that does this with a more descriptive name.
2018-09-25patch_manager: Invert conditionals within ApplyLayeredFS()Lioncash
Avoids the need to nest code quite a bit by early-exiting in error cases.
2018-09-25vfs_vector: Amend initializer list order in VectorVfsFile's constructor ↵Lioncash
initializer list Orders the initializer list members to be in the same order that they would be initialized in. Avoids compiler warnings.
2018-09-25fsmitm_romfsbuild: Avoid type truncation warningsLioncash
Cast where explicitly necessary and in other cases we can simply modify the algorithm to accomodate larger data.