X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/b1ab9ed8d0e0f1c3b66d7daa8fd5564444c56195..e3d3b979fd185d8303f28a937baa53a187fb8c7d:/libsecurity_utilities/lib/dyldcache.cpp?ds=inline diff --git a/libsecurity_utilities/lib/dyldcache.cpp b/libsecurity_utilities/lib/dyldcache.cpp index e45f4e25..267e52d8 100644 --- a/libsecurity_utilities/lib/dyldcache.cpp +++ b/libsecurity_utilities/lib/dyldcache.cpp @@ -43,6 +43,9 @@ const DYLDCache::ArchType DYLDCache::architectures[] = { { 0 } }; +const DYLDCache::ArchType DYLDCache::defaultArchitecture = + { 0, 0, "dyld_v1 default", "unknown", littleEndian }; + // // Architecture matching and lookup @@ -60,6 +63,8 @@ const DYLDCache::ArchType *DYLDCache::matchArchitecture(const dyld_cache_header for (const ArchType *arch = architectures; arch->cpu; arch++) if (!strcmp(header.magic, arch->magic)) return arch; + if (!strncmp(header.magic, "dyld_v1 ", 8)) + return &defaultArchitecture; return NULL; } @@ -78,8 +83,8 @@ DYLDCache::DYLDCache(const std::string &path) UnixError::throwMe(ENOEXEC); mFlip = *((const uint8_t *)&mArch->order) != 0x12; - mSigStart = flip(mHeader->codeSignatureOffset); - mSigLength = flip(mHeader->codeSignatureSize); + mSigStart = (size_t)flip(mHeader->codeSignatureOffset); + mSigLength = (size_t)flip(mHeader->codeSignatureSize); }