diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2015-06-25 23:31:19 -0700 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2015-06-25 23:31:19 -0700 |
commit | 24b9b564be7938eb74faaefaf78eda4637ee0da3 (patch) | |
tree | 888ed2e4f8a023cdc4a2c32587169a889e510260 | |
parent | 54798aa742d1e5183b8cbff6d78d763e0bcb35f0 (diff) |
Isolate stash directory from codesign validation.
-rw-r--r-- | libuicache.mm | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/libuicache.mm b/libuicache.mm index 800beb9..0e107f4 100644 --- a/libuicache.mm +++ b/libuicache.mm @@ -12,9 +12,19 @@ static NSArray *(*_MIFileManager$urlsForItemsInDirectoryAtURL$ignoringSymlinks$e static NSArray *$MIFileManager$urlsForItemsInDirectoryAtURL$ignoringSymlinks$error$(MIFileManager *self, SEL _cmd, NSURL *url, BOOL ignoring, NSError *error) { MIFileManager *manager(reinterpret_cast<MIFileManager *>([$MIFileManager defaultManager])); - if (NSURL *destiny = [manager destinationOfSymbolicLinkAtURL:url error:NULL]) - url = destiny; - return _MIFileManager$urlsForItemsInDirectoryAtURL$ignoringSymlinks$error$(self, _cmd, url, NO, error); + NSURL *destiny([manager destinationOfSymbolicLinkAtURL:url error:NULL]); + if (destiny == nil) + return _MIFileManager$urlsForItemsInDirectoryAtURL$ignoringSymlinks$error$(self, _cmd, url, YES, error); + + NSArray *prefix([url pathComponents]); + size_t skip([[destiny pathComponents] count]); + NSMutableArray *items([NSMutableArray array]); + for (NSURL *item in _MIFileManager$urlsForItemsInDirectoryAtURL$ignoringSymlinks$error$(self, _cmd, destiny, YES, error)) { + NSArray *components([item pathComponents]); + [items addObject:[NSURL fileURLWithPathComponents:[prefix arrayByAddingObjectsFromArray:[components subarrayWithRange:NSMakeRange(skip, [components count] - skip)]]]]; + } + + return items; } __attribute__((__constructor__)) |