mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-11-09 22:56:35 +00:00
strat: minor result/overflow check fixes
This commit is contained in:
parent
e13b81aa9e
commit
741efd04ec
3 changed files with 11 additions and 19 deletions
|
@ -39,9 +39,7 @@ namespace ams::fs::fsa {
|
|||
R_UNLESS(buffer != nullptr, fs::ResultNullptrArgument());
|
||||
R_UNLESS(offset >= 0, fs::ResultOutOfRange());
|
||||
R_UNLESS(util::IsIntValueRepresentable<s64>(size), fs::ResultOutOfRange());
|
||||
|
||||
const s64 signed_size = static_cast<s64>(size);
|
||||
R_UNLESS((std::numeric_limits<s64>::max() - offset) >= signed_size, fs::ResultOutOfRange());
|
||||
R_UNLESS(util::CanAddWithoutOverflow<s64>(offset, size), fs::ResultOutOfRange());
|
||||
|
||||
/* Do the read. */
|
||||
R_RETURN(this->DoRead(out, offset, buffer, size, option));
|
||||
|
@ -71,9 +69,7 @@ namespace ams::fs::fsa {
|
|||
R_UNLESS(buffer != nullptr, fs::ResultNullptrArgument());
|
||||
R_UNLESS(offset >= 0, fs::ResultOutOfRange());
|
||||
R_UNLESS(util::IsIntValueRepresentable<s64>(size), fs::ResultOutOfRange());
|
||||
|
||||
const s64 signed_size = static_cast<s64>(size);
|
||||
R_UNLESS((std::numeric_limits<s64>::max() - offset) >= signed_size, fs::ResultOutOfRange());
|
||||
R_UNLESS(util::CanAddWithoutOverflow<s64>(offset, size), fs::ResultOutOfRange());
|
||||
|
||||
R_RETURN(this->DoWrite(offset, buffer, size, option));
|
||||
}
|
||||
|
|
|
@ -157,11 +157,7 @@ namespace ams::time::impl::util {
|
|||
R_UNLESS(out != nullptr, time::ResultInvalidPointer());
|
||||
R_UNLESS(from.source_id == to.source_id, time::ResultNotComparable());
|
||||
|
||||
const bool no_overflow = (from.value >= 0 ? (to.value >= std::numeric_limits<s64>::min() + from.value)
|
||||
: (to.value <= std::numeric_limits<s64>::max() + from.value));
|
||||
R_UNLESS(no_overflow, time::ResultOverflowed());
|
||||
|
||||
*out = to.value - from.value;
|
||||
R_UNLESS(ams::util::TrySubtractWithoutOverflow(out, to.value, from.value), time::ResultOverflowed());
|
||||
return ResultSuccess();
|
||||
}
|
||||
|
||||
|
|
|
@ -123,7 +123,7 @@ namespace ams::mitm::sysupdater {
|
|||
|
||||
/* Open the file storage. */
|
||||
std::shared_ptr<ams::fs::FileStorageBasedFileSystem> file_storage = fssystem::AllocateShared<ams::fs::FileStorageBasedFileSystem>();
|
||||
R_UNLESS(file_storage != nullptr, fs::ResultAllocationMemoryFailedInFileSystemProxyCoreImplD());
|
||||
R_UNLESS(file_storage != nullptr, fs::ResultAllocationMemoryFailedInNcaFileSystemServiceImplA());
|
||||
R_TRY(file_storage->Initialize(std::move(base_fs), nsp_path, ams::fs::OpenMode_Read));
|
||||
|
||||
/* Create a partition fs. */
|
||||
|
@ -138,7 +138,7 @@ namespace ams::mitm::sysupdater {
|
|||
Result ParseNca(const char **path, std::shared_ptr<fssystem::NcaReader> *out, std::shared_ptr<ams::fs::fsa::IFileSystem> base_fs) {
|
||||
/* Open the file storage. */
|
||||
std::shared_ptr<ams::fs::FileStorageBasedFileSystem> file_storage = fssystem::AllocateShared<ams::fs::FileStorageBasedFileSystem>();
|
||||
R_UNLESS(file_storage != nullptr, fs::ResultAllocationMemoryFailedInFileSystemProxyCoreImplE());
|
||||
R_UNLESS(file_storage != nullptr, fs::ResultAllocationMemoryFailedInNcaFileSystemServiceImplB());
|
||||
|
||||
/* Get the nca path. */
|
||||
ams::fs::Path nca_path;
|
||||
|
|
Loading…
Reference in a new issue