diff options
-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())); } } |