summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-10-24 21:25:30 +0200
committerLioncash <mathew1800@gmail.com>2018-10-25 00:22:24 +0200
commit6f00628564510e22eef1f3180d974a94b896c36a (patch)
tree6e6e37ba13b5e240691f2dbc382ec3c5e1582f5f /src/core/hle/service
parentservice/acc: Early return in failure case in LoadImage() (diff)
downloadyuzu-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')
-rw-r--r--src/core/hle/service/acc/acc.cpp13
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()));
}
}