From: Jay Freeman (saurik) Date: Sat, 27 Jun 2015 04:30:47 +0000 (-0700) Subject: Align __LINKEDIT segment vmsize to match filesize. X-Git-Tag: v1.2.0~1 X-Git-Url: https://git.saurik.com/ldid.git/commitdiff_plain/2036c29d2273e06ca424bd40d139aba6039a11ca Align __LINKEDIT segment vmsize to match filesize. --- diff --git a/ldid.cpp b/ldid.cpp index 027ca42..8aa0b4e 100644 --- a/ldid.cpp +++ b/ldid.cpp @@ -1068,10 +1068,17 @@ int main(int argc, const char *argv[]) { signature->dataoff = mach_header.Swap(align); signature->datasize = mach_header.Swap(allocation.alloc_); - _foreach (segment, mach_header.GetSegments("__LINKEDIT")) - segment->filesize = mach_header.Swap(align + allocation.alloc_ - mach_header.Swap(segment->fileoff)); - _foreach (segment, mach_header.GetSegments64("__LINKEDIT")) - segment->filesize = mach_header.Swap(align + allocation.alloc_ - mach_header.Swap(segment->fileoff)); + _foreach (segment, mach_header.GetSegments("__LINKEDIT")) { + size_t size(mach_header.Swap(align + allocation.alloc_ - mach_header.Swap(segment->fileoff))); + segment->filesize = size; + segment->vmsize = Align(size, 0x1000); + } + + _foreach (segment, mach_header.GetSegments64("__LINKEDIT")) { + size_t size(mach_header.Swap(align + allocation.alloc_ - mach_header.Swap(segment->fileoff))); + segment->filesize = size; + segment->vmsize = Align(size, 0x1000); + } } }