From 59c16da6fb16a393f4188145e1c6c6012a696e6e Mon Sep 17 00:00:00 2001 From: John Reiser Date: Wed, 10 Mar 2010 13:14:52 -0800 Subject: [PATCH] PackMachBase::pack4dylib avoid sliding if offset or reloff is 0. --- src/p_mach.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/p_mach.cpp b/src/p_mach.cpp index 6a7e9965..67e5c228 100644 --- a/src/p_mach.cpp +++ b/src/p_mach.cpp @@ -597,9 +597,9 @@ void PackMachBase::pack4dylib( // append PackHeader Mach_section_command seccmdtmp; for (unsigned j = 0; j < nsects; ++secp, ++j) { seccmdtmp = *secp; - seccmdtmp.offset += slide; + if (o_end_txt <= seccmdtmp.offset) { seccmdtmp.offset += slide; } if (seccmdtmp.nreloc) { - seccmdtmp.reloff += slide; + if (o_end_txt <= seccmdtmp.reloff) { seccmdtmp.reloff += slide; } } fo->rewrite(&seccmdtmp, sizeof(seccmdtmp)); hdrpos += sizeof(seccmdtmp); @@ -747,7 +747,7 @@ void PackDylibI386::pack3(OutputFile *fo, Filter &ft) // append loader void PackDylibAMD64::pack3(OutputFile *fo, Filter &ft) // append loader { - TE32 disp; // FIXME: 64-bit ??? + TE32 disp; unsigned const zero = 0; unsigned len = fo->getBytesWritten(); fo->write(&zero, 3& (0u-len));