From 2b1fc96ebb746ee95c12b5a35cd4ffbe9a83d73e Mon Sep 17 00:00:00 2001 From: Mark Rowe Date: Fri, 27 Feb 2026 17:47:37 -0800 Subject: [MachO] Ensure that weak bound symbols are not resolved to their import address Fixes https://github.com/Vector35/binaryninja-api/issues/7989. Also corrects an oversight from d92b3684 in handling of library ordinals >= 128. --- view/macho/chained_fixups.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'view/macho/chained_fixups.cpp') diff --git a/view/macho/chained_fixups.cpp b/view/macho/chained_fixups.cpp index 9a8e8617..e71b34b8 100644 --- a/view/macho/chained_fixups.cpp +++ b/view/macho/chained_fixups.cpp @@ -247,7 +247,7 @@ ImportEntry ReadChainedImport32(BinaryReader& reader, std::span symb return { std::string_view(&symbolData[import.name_offset]), 0, - static_cast(import.lib_ordinal), + import.lib_ordinal > 0xF0 ? static_cast(import.lib_ordinal) : static_cast(import.lib_ordinal), (bool)import.weak_import, }; } @@ -259,7 +259,7 @@ ImportEntry ReadChainedImportAddend32(BinaryReader& reader, std::span(import.addend), - static_cast(import.lib_ordinal), + import.lib_ordinal > 0xF0 ? static_cast(import.lib_ordinal) : static_cast(import.lib_ordinal), (bool)import.weak_import, }; } @@ -271,7 +271,7 @@ ImportEntry ReadChainedImportAddend64(BinaryReader& reader, std::span(import.lib_ordinal), + import.lib_ordinal > 0xFFF0 ? static_cast(import.lib_ordinal) : static_cast(import.lib_ordinal), (bool)import.weak_import, }; } -- cgit v1.3.1