summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2015-06-26 01:31:54 -0700
committerJay Freeman (saurik) <saurik@saurik.com>2015-06-26 01:31:54 -0700
commit5d7ceb5d3fed7d6c4eed4a2282e200af37617f63 (patch)
tree151b5d4edf7bf86b363864a2ebcaa3e9c536f743
parentcd35ba9e30a5b90e88fc728d8740b02d1dd15c5a (diff)
downloadldid-5d7ceb5d3fed7d6c4eed4a2282e200af37617f63.tar.gz
ldid-5d7ceb5d3fed7d6c4eed4a2282e200af37617f63.tar.zst
ldid-5d7ceb5d3fed7d6c4eed4a2282e200af37617f63.zip
Commit old logic to force codesign's install_name.
-rw-r--r--ldid.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/ldid.cpp b/ldid.cpp
index e28a8d7..8d3dff2 100644
--- a/ldid.cpp
+++ b/ldid.cpp
@@ -725,6 +725,8 @@ int main(int argc, const char *argv[]) {
uint32_t flag_CPUType(_not(uint32_t));
uint32_t flag_CPUSubtype(_not(uint32_t));
+ const char *flag_I(NULL);
+
bool timeh(false);
uint32_t timev(0);
@@ -801,6 +803,10 @@ int main(int argc, const char *argv[]) {
}
} break;
+ case 'I': {
+ flag_I = argv[argi] + 2;
+ } break;
+
case 'n': {
char *arge;
noffset = strtoul(argv[argi] + 2, &arge, 0);
@@ -835,6 +841,8 @@ int main(int argc, const char *argv[]) {
base = path;
}
+ const char *name(flag_I ?: base);
+
if (flag_r) {
uint32_t clip(0); {
FatHeader fat_header(Map(path));
@@ -987,7 +995,7 @@ int main(int argc, const char *argv[]) {
special = std::max(special, CSSLOT_CODEDIRECTORY);
alloc += sizeof(struct BlobIndex);
alloc += sizeof(struct CodeDirectory);
- alloc += strlen(base) + 1;
+ alloc += strlen(name) + 1;
special = std::max(special, CSSLOT_REQUIREMENTS);
alloc += sizeof(struct BlobIndex);
@@ -1205,8 +1213,8 @@ int main(int argc, const char *argv[]) {
directory->spare2 = Swap(uint32_t(0));
directory->identOffset = Swap(offset - begin);
- strcpy(reinterpret_cast<char *>(blob + offset), base);
- offset += strlen(base) + 1;
+ strcpy(reinterpret_cast<char *>(blob + offset), name);
+ offset += strlen(name) + 1;
uint32_t special = xmld == NULL ? CSSLOT_REQUIREMENTS : CSSLOT_ENTITLEMENTS;
directory->nSpecialSlots = Swap(special);