mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-09 00:11:24 +12:00
Minor code and memory initialization fixes
* Explicitly initialize member variables in SELFDecrypter, MemInfo, and VirtualMemoryBlock * Zero out memory used for counter/nonce in aes-ctr * Fix use of a ControlInfo pointer after it is added to an Array via Array::Move (which makes it an invalid pointer) in SELFDecrypter::LoadHeaders
This commit is contained in:
parent
64145d7d62
commit
d533572ee9
3 changed files with 8 additions and 4 deletions
|
@ -2,7 +2,7 @@
|
||||||
#include "unself.h"
|
#include "unself.h"
|
||||||
|
|
||||||
SELFDecrypter::SELFDecrypter(vfsStream& s)
|
SELFDecrypter::SELFDecrypter(vfsStream& s)
|
||||||
: self_f(s), key_v()
|
: self_f(s), key_v(), data_buf_length(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,9 +92,10 @@ bool SELFDecrypter::LoadHeaders(bool isElf32)
|
||||||
{
|
{
|
||||||
ControlInfo* cinfo = new ControlInfo();
|
ControlInfo* cinfo = new ControlInfo();
|
||||||
cinfo->Load(self_f);
|
cinfo->Load(self_f);
|
||||||
ctrlinfo_arr.Move(cinfo);
|
|
||||||
|
|
||||||
i += cinfo->size;
|
i += cinfo->size;
|
||||||
|
|
||||||
|
ctrlinfo_arr.Move(cinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read ELF section headers.
|
// Read ELF section headers.
|
||||||
|
@ -369,6 +370,9 @@ bool SELFDecrypter::DecryptData()
|
||||||
self_f.Seek(meta_shdr[i].data_offset);
|
self_f.Seek(meta_shdr[i].data_offset);
|
||||||
self_f.Read(buf, meta_shdr[i].data_size);
|
self_f.Read(buf, meta_shdr[i].data_size);
|
||||||
|
|
||||||
|
// Zero out our ctr nonce
|
||||||
|
memset(ctr_stream_block, 0, sizeof(ctr_stream_block));
|
||||||
|
|
||||||
// Perform AES-CTR encryption on the data blocks.
|
// Perform AES-CTR encryption on the data blocks.
|
||||||
aes_setkey_enc(&aes, data_key, 128);
|
aes_setkey_enc(&aes, data_key, 128);
|
||||||
aes_crypt_ctr(&aes, meta_shdr[i].data_size, &ctr_nc_off, data_iv, ctr_stream_block, buf, buf);
|
aes_crypt_ctr(&aes, meta_shdr[i].data_size, &ctr_nc_off, data_iv, ctr_stream_block, buf, buf);
|
||||||
|
|
|
@ -535,7 +535,7 @@ template<> __forceinline u64 MemoryBase::ReverseData<2>(u64 val) { return Revers
|
||||||
template<> __forceinline u64 MemoryBase::ReverseData<4>(u64 val) { return Reverse32(val); }
|
template<> __forceinline u64 MemoryBase::ReverseData<4>(u64 val) { return Reverse32(val); }
|
||||||
template<> __forceinline u64 MemoryBase::ReverseData<8>(u64 val) { return Reverse64(val); }
|
template<> __forceinline u64 MemoryBase::ReverseData<8>(u64 val) { return Reverse64(val); }
|
||||||
|
|
||||||
VirtualMemoryBlock::VirtualMemoryBlock() : MemoryBlock()
|
VirtualMemoryBlock::VirtualMemoryBlock() : MemoryBlock(), m_reserve_size(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ struct MemInfo
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
MemInfo()
|
MemInfo() : addr(0), size(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue