diff options
author | Lioncash <mathew1800@gmail.com> | 2018-10-24 21:25:30 +0200 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2018-10-25 00:22:24 +0200 |
commit | 6f00628564510e22eef1f3180d974a94b896c36a (patch) | |
tree | 6e6e37ba13b5e240691f2dbc382ec3c5e1582f5f /src/core/hle/service/acc/acc.cpp | |
parent | service/acc: Early return in failure case in LoadImage() (diff) | |
download | yuzu-6f00628564510e22eef1f3180d974a94b896c36a.tar yuzu-6f00628564510e22eef1f3180d974a94b896c36a.tar.gz yuzu-6f00628564510e22eef1f3180d974a94b896c36a.tar.bz2 yuzu-6f00628564510e22eef1f3180d974a94b896c36a.tar.lz yuzu-6f00628564510e22eef1f3180d974a94b896c36a.tar.xz yuzu-6f00628564510e22eef1f3180d974a94b896c36a.tar.zst yuzu-6f00628564510e22eef1f3180d974a94b896c36a.zip |
Diffstat (limited to 'src/core/hle/service/acc/acc.cpp')
-rw-r--r-- | src/core/hle/service/acc/acc.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index 17e3aa0e2..d17d784cf 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp @@ -21,8 +21,6 @@ namespace Service::Account { -constexpr u32 MAX_JPEG_IMAGE_SIZE = 0x20000; - // TODO: RE this structure struct UserData { INSERT_PADDING_WORDS(1); @@ -39,6 +37,11 @@ static std::string GetImagePath(UUID uuid) { "/system/save/8000000000000010/su/avators/" + uuid.FormatSwitch() + ".jpg"; } +static constexpr u32 SanitizeJPEGSize(std::size_t size) { + constexpr std::size_t max_jpeg_image_size = 0x20000; + return static_cast<u32>(std::min(size, max_jpeg_image_size)); +} + class IProfile final : public ServiceFramework<IProfile> { public: explicit IProfile(UUID user_id, ProfileManager& profile_manager) @@ -112,12 +115,12 @@ private: return; } - const auto size = std::min<u32>(image.GetSize(), MAX_JPEG_IMAGE_SIZE); + const u32 size = SanitizeJPEGSize(image.GetSize()); std::vector<u8> buffer(size); image.ReadBytes(buffer.data(), buffer.size()); ctx.WriteBuffer(buffer.data(), buffer.size()); - rb.Push<u32>(buffer.size()); + rb.Push<u32>(size); } void GetImageSize(Kernel::HLERequestContext& ctx) { @@ -133,7 +136,7 @@ private: "Failed to load user provided image! Falling back to built-in backup..."); rb.Push<u32>(backup_jpeg_size); } else { - rb.Push<u32>(std::min<u32>(image.GetSize(), MAX_JPEG_IMAGE_SIZE)); + rb.Push<u32>(SanitizeJPEGSize(image.GetSize())); } } |