From d92b3684825220345b902f93b22b160e9401012b Mon Sep 17 00:00:00 2001 From: Mark Rowe Date: Fri, 27 Feb 2026 16:50:09 -0800 Subject: [MachO] Fix incorrect handling of BIND_SPECIAL_DYLIB_*_LOOKUP in chained fixups These lookup modes are negative values that are encoded in the library ordinal, an unsigned field, of an import fixup entry. Incorrect sign extension when converting these ordinals back to signed values led to them being misinterpreted. --- view/macho/chained_fixups.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'view') diff --git a/view/macho/chained_fixups.cpp b/view/macho/chained_fixups.cpp index e4e6d160..9a8e8617 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), + 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), + static_cast(import.lib_ordinal), (bool)import.weak_import, }; } @@ -271,7 +271,7 @@ ImportEntry ReadChainedImportAddend64(BinaryReader& reader, std::span(import.lib_ordinal), + static_cast(import.lib_ordinal), (bool)import.weak_import, }; } -- cgit v1.3.1