summaryrefslogtreecommitdiff
path: root/view/macho/chained_fixups.cpp
diff options
context:
space:
mode:
authorMark Rowe <mark@vector35.com>2026-02-27 17:47:37 -0800
committerMark Rowe <mark@vector35.com>2026-02-27 19:17:27 -0800
commit2b1fc96ebb746ee95c12b5a35cd4ffbe9a83d73e (patch)
treeff0533ebc473d2827e819a139ce758f3223971f4 /view/macho/chained_fixups.cpp
parentd92b3684825220345b902f93b22b160e9401012b (diff)
[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.
Diffstat (limited to 'view/macho/chained_fixups.cpp')
-rw-r--r--view/macho/chained_fixups.cpp6
1 files changed, 3 insertions, 3 deletions
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<const char> symb
return {
std::string_view(&symbolData[import.name_offset]),
0,
- static_cast<int8_t>(import.lib_ordinal),
+ import.lib_ordinal > 0xF0 ? static_cast<int8_t>(import.lib_ordinal) : static_cast<int32_t>(import.lib_ordinal),
(bool)import.weak_import,
};
}
@@ -259,7 +259,7 @@ ImportEntry ReadChainedImportAddend32(BinaryReader& reader, std::span<const char
return {
std::string_view(&symbolData[import.name_offset]),
static_cast<uint32_t>(import.addend),
- static_cast<int8_t>(import.lib_ordinal),
+ import.lib_ordinal > 0xF0 ? static_cast<int8_t>(import.lib_ordinal) : static_cast<int32_t>(import.lib_ordinal),
(bool)import.weak_import,
};
}
@@ -271,7 +271,7 @@ ImportEntry ReadChainedImportAddend64(BinaryReader& reader, std::span<const char
return {
std::string_view(&symbolData[import.name_offset]),
import.addend,
- static_cast<int16_t>(import.lib_ordinal),
+ import.lib_ordinal > 0xFFF0 ? static_cast<int16_t>(import.lib_ordinal) : static_cast<int32_t>(import.lib_ordinal),
(bool)import.weak_import,
};
}