GP-4927: Fixing NeLoader IndexOutOfBoundsException

This commit is contained in:
Ryan Kurtz 2024-09-13 07:34:37 -04:00
parent f292bad0ed
commit 13d36c3c60

View file

@ -350,8 +350,15 @@ public class NeLoader extends AbstractOrdinalSupportLoader {
Address addr = space.getAddress(segidx, 0); Address addr = space.getAddress(segidx, 0);
try { try {
int offset = resource.getFileOffsetShifted(); long offset = Integer.toUnsignedLong(resource.getFileOffsetShifted());
int length = resource.getFileLengthShifted(); long length = Integer.toUnsignedLong(resource.getFileLengthShifted());
long extra = offset + length - fileBytes.getSize();
if (extra > 0) {
log.appendMsg(
"Resource at 0x%x exceeds file length by 0x%x bytes...truncating"
.formatted(offset, extra));
length -= extra;
}
if (length > 0) { if (length > 0) {
MemoryBlockUtils.createInitializedBlock(program, false, "Rsrc" + (id++), MemoryBlockUtils.createInitializedBlock(program, false, "Rsrc" + (id++),
addr, fileBytes, offset, length, "", "", true, false, false, log); addr, fileBytes, offset, length, "", "", true, false, false, log);