The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. This fork is used to manage Apple’s stable releases of Clang as well as support the Swift project.
MachORebaseEntry::moveNext() and MachOBindEntry::moveNext() assume that the rebase/bind table ends with {REBASE|BIND}_OPCODE_DONE or an actual rebase/bind. However a valid rebase/bind table might also end with other effectively no-op opcodes, which caused the parser to move past the end and go into the next table, resulting in corrupted entries or infinite loops.
(cherry picked from commit 1fa073ab896e65c55ff63487be0b41d7cea9aa77)
MachORebaseEntry::moveNext()
andMachOBindEntry::moveNext()
assume that the rebase/bind table ends with{REBASE|BIND}_OPCODE_DONE
or an actual rebase/bind. However a valid rebase/bind table might also end with other effectively no-op opcodes, which caused the parser to move past the end and go into the next table, resulting in corrupted entries or infinite loops.(cherry picked from commit 1fa073ab896e65c55ff63487be0b41d7cea9aa77)