mirror of
https://github.com/cemu-project/GhidraRPXLoader.git
synced 2024-11-25 18:46:56 +01:00
Don't save section data for the special sections.
This commit is contained in:
parent
2f4362b159
commit
3085d0b374
@ -46,24 +46,30 @@ public class RPXUtils {
|
|||||||
if (offset != 0) {
|
if (offset != 0) {
|
||||||
if ((flags & SHT_NOBITS) != SHT_NOBITS) {
|
if ((flags & SHT_NOBITS) != SHT_NOBITS) {
|
||||||
byte[] data = h.getData();
|
byte[] data = h.getData();
|
||||||
|
if (h.getType() == SHT_RPL_CRCS || h.getType() == SHT_RPL_EXPORTS || h.getType() == SHT_RPL_IMPORTS
|
||||||
|
|| h.getType() == SHT_RPL_FILEINFO) {
|
||||||
|
data = new byte[0];
|
||||||
|
curSize = 0;
|
||||||
|
} else {
|
||||||
|
if ((flags & SHF_RPL_ZLIB) == SHF_RPL_ZLIB) {
|
||||||
|
monitor.setMessage("Decompressing section " + h.getTypeAsString());
|
||||||
|
long section_size_inflated = ByteBuffer.wrap(Arrays.copyOf(data, 4)).getInt() & 0xFFFFFFFF;
|
||||||
|
Inflater inflater = new Inflater();
|
||||||
|
inflater.setInput(data, 4, (int) h.getSize() - 4); // the first byte is the size
|
||||||
|
|
||||||
if ((flags & SHF_RPL_ZLIB) == SHF_RPL_ZLIB) {
|
byte[] decompressed = new byte[(int) section_size_inflated];
|
||||||
monitor.setMessage("Decompressing section " + h.getTypeAsString());
|
|
||||||
long section_size_inflated = ByteBuffer.wrap(Arrays.copyOf(data, 4)).getInt() & 0xFFFFFFFF;
|
|
||||||
Inflater inflater = new Inflater();
|
|
||||||
inflater.setInput(data, 4, (int) h.getSize() - 4); // the first byte is the size
|
|
||||||
|
|
||||||
byte[] decompressed = new byte[(int) section_size_inflated];
|
inflater.inflate(decompressed);
|
||||||
|
|
||||||
inflater.inflate(decompressed);
|
inflater.end();
|
||||||
|
|
||||||
inflater.end();
|
// Is this alignment really necessary?
|
||||||
|
curSize = (section_size_inflated + 0x03) & ~0x3;
|
||||||
// Is this alignment really necessary?
|
flags &= ~SHF_RPL_ZLIB;
|
||||||
curSize = (section_size_inflated + 0x03) & ~0x3;
|
data = decompressed;
|
||||||
flags &= ~SHF_RPL_ZLIB;
|
}
|
||||||
data = decompressed;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
long newEnd = shdr_data_elf_offset + curSize;
|
long newEnd = shdr_data_elf_offset + curSize;
|
||||||
|
|
||||||
buffer = Utils.checkAndGrowByteBuffer(buffer, newEnd);
|
buffer = Utils.checkAndGrowByteBuffer(buffer, newEnd);
|
||||||
|
Loading…
Reference in New Issue
Block a user