From 2036c29d2273e06ca424bd40d139aba6039a11ca Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Fri, 26 Jun 2015 21:30:47 -0700 Subject: Align __LINKEDIT segment vmsize to match filesize. --- ldid.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'ldid.cpp') 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); + } } } -- cgit v1.2.3-56-ge451