mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-28 13:28:01 +03:00
Copy debug self elf properly
In 7de2869a53
this was changed to be a bit more safe, however it was reading from offset 0 instead of where the real elf started, meaning every debug self would just fail to load immediately.
This commit is contained in:
parent
8437a5f5ac
commit
e08c7f2a9a
1 changed files with 2 additions and 3 deletions
|
@ -1336,8 +1336,8 @@ static fs::file CheckDebugSelf(const fs::file& s)
|
||||||
// Get the real elf offset.
|
// Get the real elf offset.
|
||||||
s.seek(0x10);
|
s.seek(0x10);
|
||||||
|
|
||||||
// Start at the real elf offset.
|
// Read the real elf offset.
|
||||||
s.seek(key_version == 0x80 ? +s.read<be_t<u64>>() : +s.read<le_t<u64>>());
|
usz read_pos = key_version == 0x80 ? +s.read<be_t<u64>>() : +s.read<le_t<u64>>();
|
||||||
|
|
||||||
// Write the real ELF file back.
|
// Write the real ELF file back.
|
||||||
fs::file e = fs::make_stream<std::vector<u8>>();
|
fs::file e = fs::make_stream<std::vector<u8>>();
|
||||||
|
@ -1345,7 +1345,6 @@ static fs::file CheckDebugSelf(const fs::file& s)
|
||||||
// Copy the data.
|
// Copy the data.
|
||||||
std::vector<u8> buf(std::min<usz>(s.size(), 4096));
|
std::vector<u8> buf(std::min<usz>(s.size(), 4096));
|
||||||
|
|
||||||
usz read_pos = 0;
|
|
||||||
while (const u64 size = s.read_at(read_pos, buf.data(), buf.size()))
|
while (const u64 size = s.read_at(read_pos, buf.data(), buf.size()))
|
||||||
{
|
{
|
||||||
e.write(buf.data(), size);
|
e.write(buf.data(), size);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue