GP-3505: Fixed an AddressOutOfBoundsException that could sometimes occur

when importing the exports section of dyld_shared_cache files
(Closes #5392)
This commit is contained in:
Ryan Kurtz
2023-05-30 09:09:55 -04:00
parent 1ea23d19fd
commit 47eb06416c
@@ -511,11 +511,14 @@ public class MachoProgramBuilder {
Address baseAddr = space.getAddress(textSegment.getVMaddress());
for (ExportEntry export : exports) {
String name = SymbolUtilities.replaceInvalidChars(export.getName(), true);
Address exportAddr = baseAddr.add(export.getAddress());
program.getSymbolTable().addExternalEntryPoint(exportAddr);
try {
Address exportAddr = baseAddr.add(export.getAddress());
program.getSymbolTable().addExternalEntryPoint(exportAddr);
program.getSymbolTable().createLabel(exportAddr, name, SourceType.IMPORTED);
}
catch (AddressOutOfBoundsException e) {
log.appendMsg("Failed to process export '" + export + "': " + e.getMessage());
}
catch (Exception e) {
log.appendMsg("Unable to create symbol: " + e.getMessage());
}