mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-19 08:50:48 +00:00
Check TMD sizes using the actual constant
0x49e4 is the actual maximum TMD size (which is checked against in ES). IsValidTMDSize is added to ESFormats to avoid duplicating the constant.
This commit is contained in:
parent
f4190ab1c4
commit
b5a2f34a37
5 changed files with 18 additions and 7 deletions
|
@ -57,6 +57,11 @@ bool Content::IsShared() const
|
|||
return (type & 0x8000) != 0;
|
||||
}
|
||||
|
||||
bool IsValidTMDSize(size_t size)
|
||||
{
|
||||
return size <= 0x49e4;
|
||||
}
|
||||
|
||||
TMDReader::TMDReader(const std::vector<u8>& bytes) : m_bytes(bytes)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -130,6 +130,8 @@ struct Ticket
|
|||
static_assert(sizeof(Ticket) == 0x2A4, "Ticket has the wrong size");
|
||||
#pragma pack(pop)
|
||||
|
||||
bool IsValidTMDSize(size_t size);
|
||||
|
||||
class TMDReader final
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -91,6 +91,9 @@ IPCCommandResult ES::ImportTmd(Context& context, const IOCtlVRequest& request)
|
|||
if (!request.HasNumberOfValidVectors(1, 0))
|
||||
return GetDefaultReply(ES_EINVAL);
|
||||
|
||||
if (!IOS::ES::IsValidTMDSize(request.in_vectors[0].size))
|
||||
return GetDefaultReply(ES_EINVAL);
|
||||
|
||||
std::vector<u8> tmd(request.in_vectors[0].size);
|
||||
Memory::CopyFromEmu(tmd.data(), request.in_vectors[0].address, request.in_vectors[0].size);
|
||||
return GetDefaultReply(ImportTmd(context, tmd));
|
||||
|
@ -131,6 +134,9 @@ IPCCommandResult ES::ImportTitleInit(Context& context, const IOCtlVRequest& requ
|
|||
if (!request.HasNumberOfValidVectors(4, 0))
|
||||
return GetDefaultReply(ES_EINVAL);
|
||||
|
||||
if (!IOS::ES::IsValidTMDSize(request.in_vectors[0].size))
|
||||
return GetDefaultReply(ES_EINVAL);
|
||||
|
||||
std::vector<u8> tmd(request.in_vectors[0].size);
|
||||
Memory::CopyFromEmu(tmd.data(), request.in_vectors[0].address, request.in_vectors[0].size);
|
||||
return GetDefaultReply(ImportTitleInit(context, tmd));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue