mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-04-21 03:54:57 +00:00
WiiSave: Use the correct length for paths
Paths can never exceed 0x40 characters as this is the maximum length that is allowed by IOS (and probably the common FS library too).
This commit is contained in:
parent
8af16fdd28
commit
4df266f943
1 changed files with 6 additions and 3 deletions
|
@ -105,10 +105,12 @@ struct FileHDR
|
|||
u8 permissions;
|
||||
u8 attrib;
|
||||
u8 type; // (1=file, 2=directory)
|
||||
std::array<char, 0x45> name;
|
||||
std::array<char, 0x40> name;
|
||||
std::array<u8, 5> padding;
|
||||
std::array<u8, 0x10> iv;
|
||||
std::array<u8, 0x20> unk;
|
||||
};
|
||||
static_assert(sizeof(FileHDR) == 0x80, "FileHDR has an incorrect size");
|
||||
#pragma pack(pop)
|
||||
|
||||
class Storage
|
||||
|
@ -370,7 +372,8 @@ public:
|
|||
if (type != SaveFile::Type::Directory && type != SaveFile::Type::File)
|
||||
return {};
|
||||
save_file.type = type;
|
||||
save_file.path = file_hdr.name.data();
|
||||
save_file.path =
|
||||
std::string{file_hdr.name.data(), strnlen(file_hdr.name.data(), file_hdr.name.size())};
|
||||
if (type == SaveFile::Type::File)
|
||||
{
|
||||
const u32 rounded_size = Common::AlignUp<u32>(file_hdr.size, BLOCK_SZ);
|
||||
|
@ -419,7 +422,7 @@ public:
|
|||
file_hdr.permissions = save_file.mode;
|
||||
file_hdr.attrib = save_file.attributes;
|
||||
file_hdr.type = static_cast<u8>(save_file.type);
|
||||
if (save_file.path.length() > 0x44)
|
||||
if (save_file.path.length() > file_hdr.name.size())
|
||||
return false;
|
||||
std::strncpy(file_hdr.name.data(), save_file.path.data(), file_hdr.name.size());
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue