From 6af7651a254ad76a283a14b3dc103547b44c3cdf Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Fri, 8 Sep 2023 14:38:35 -0500 Subject: [PATCH] =?UTF-8?q?[AltServer]=20Fixes=20=E2=80=9CSDK=20does=20not?= =?UTF-8?q?=20contain=20libarclite=E2=80=9D=20error=20when=20archiving?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Podfile | 1 + Podfile.lock | 8 +- .../STPrivilegedTask.podspec.json | 10 +- Pods/Manifest.lock | 8 +- Pods/Pods.xcodeproj/project.pbxproj | 30 ++-- Pods/STPrivilegedTask/LICENSE | 2 +- Pods/STPrivilegedTask/README.md | 63 ++++--- Pods/STPrivilegedTask/STPrivilegedTask.h | 50 +++--- Pods/STPrivilegedTask/STPrivilegedTask.m | 162 +++++++++--------- .../Pods-AltServer-acknowledgements.markdown | 2 +- .../Pods-AltServer-acknowledgements.plist | 2 +- .../STPrivilegedTask-Info.plist | 2 +- 12 files changed, 176 insertions(+), 164 deletions(-) diff --git a/Podfile b/Podfile index d8978b56..a9e069da 100644 --- a/Podfile +++ b/Podfile @@ -36,6 +36,7 @@ post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '14.0' + config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '11.0' end end end \ No newline at end of file diff --git a/Podfile.lock b/Podfile.lock index 45829347..8503f488 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -10,7 +10,7 @@ PODS: - KeychainAccess (4.2.2) - Nuke (10.7.1) - Sparkle (2.3.2) - - STPrivilegedTask (1.0.7) + - STPrivilegedTask (1.0.8) DEPENDENCIES: - AppCenter (~> 5.0) @@ -32,7 +32,7 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: STPrivilegedTask: - :commit: 6ca513d0dcb2aefb0e5a95915b77bbbbd8a6d942 + :commit: 02ab5081c4f1d7f6a70f5413c88d32dbbea66f4c :git: https://github.com/rileytestut/STPrivilegedTask.git SPEC CHECKSUMS: @@ -40,8 +40,8 @@ SPEC CHECKSUMS: KeychainAccess: c0c4f7f38f6fc7bbe58f5702e25f7bd2f65abf51 Nuke: 279f17a599fd1c83cf51de5e0e1f2db143a287b0 Sparkle: b36a51855e81585a1c38e32e53101d36c00f4304 - STPrivilegedTask: 56c3397238a1ec07720fb877a044898373cd2c68 + STPrivilegedTask: 3a3f6add7c567b1be8c326328eb3dd6dc5daed91 -PODFILE CHECKSUM: ca0ab842e91a672a9020d57cc032e765532a5163 +PODFILE CHECKSUM: 3ca028c93d6c7f9f71be0028419da64855dba982 COCOAPODS: 1.12.1 diff --git a/Pods/Local Podspecs/STPrivilegedTask.podspec.json b/Pods/Local Podspecs/STPrivilegedTask.podspec.json index dbc8cc86..2b80b547 100644 --- a/Pods/Local Podspecs/STPrivilegedTask.podspec.json +++ b/Pods/Local Podspecs/STPrivilegedTask.podspec.json @@ -1,8 +1,8 @@ { "name": "STPrivilegedTask", - "version": "1.0.7", - "summary": "An NSTask-like wrapper around Mac OS X Security Framework's AuthorizationExecuteWithPrivileges()", - "description": "An NSTask-like wrapper around AuthorizationExecuteWithPrivileges() in the Security API to run shell commands with root privileges in Mac OS X.", + "version": "1.0.8", + "summary": "An NSTask-like wrapper around the macOS Security Framework's AuthorizationExecuteWithPrivileges()", + "description": "An NSTask-like wrapper around AuthorizationExecuteWithPrivileges() in the Security API to run shell commands with root privileges on macOS.", "homepage": "http://github.com/sveinbjornt/STPrivilegedTask", "license": { "type": "BSD" @@ -15,11 +15,11 @@ }, "source": { "git": "https://github.com/sveinbjornt/STPrivilegedTask.git", - "tag": "1.0.7" + "tag": "1.0.8" }, "source_files": "STPrivilegedTask.{h,m}", "exclude_files": "PrivilegedTaskExample", "public_header_files": "STPrivilegedTask.h", "frameworks": "Security", - "requires_arc": false + "requires_arc": true } diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 45829347..8503f488 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -10,7 +10,7 @@ PODS: - KeychainAccess (4.2.2) - Nuke (10.7.1) - Sparkle (2.3.2) - - STPrivilegedTask (1.0.7) + - STPrivilegedTask (1.0.8) DEPENDENCIES: - AppCenter (~> 5.0) @@ -32,7 +32,7 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: STPrivilegedTask: - :commit: 6ca513d0dcb2aefb0e5a95915b77bbbbd8a6d942 + :commit: 02ab5081c4f1d7f6a70f5413c88d32dbbea66f4c :git: https://github.com/rileytestut/STPrivilegedTask.git SPEC CHECKSUMS: @@ -40,8 +40,8 @@ SPEC CHECKSUMS: KeychainAccess: c0c4f7f38f6fc7bbe58f5702e25f7bd2f65abf51 Nuke: 279f17a599fd1c83cf51de5e0e1f2db143a287b0 Sparkle: b36a51855e81585a1c38e32e53101d36c00f4304 - STPrivilegedTask: 56c3397238a1ec07720fb877a044898373cd2c68 + STPrivilegedTask: 3a3f6add7c567b1be8c326328eb3dd6dc5daed91 -PODFILE CHECKSUM: ca0ab842e91a672a9020d57cc032e765532a5163 +PODFILE CHECKSUM: 3ca028c93d6c7f9f71be0028419da64855dba982 COCOAPODS: 1.12.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 70188141..c47ddd75 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 55; objects = { /* Begin PBXAggregateTarget section */ @@ -46,7 +46,6 @@ 2C9022F02292EA5FB21AB5FFC27D05F8 /* Keychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B3828E0FAA00B3172C56A17C8D30131 /* Keychain.swift */; }; 2D157E01ABC2D8D185B85AEA13390D1D /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8774E27EFE7069D7F643A5C6E26F774D /* Extensions.swift */; }; 2DDEB2192477E63CC8BAADACDD0B28F4 /* Pods-AltServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 47FD0729E1AE07F5807D70E4ABEA48F0 /* Pods-AltServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3826A30459DE5A0E96693170CED95052 /* STPrivilegedTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 426F3D0BE037C85C934A1C2F5C761853 /* STPrivilegedTask.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc -w -Xanalyzer -analyzer-disable-all-checks"; }; }; 38FB2C5A8088681A4531FE4A67F76E87 /* ImagePipelineCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AEAFE2C57F39913794E1136F5477254 /* ImagePipelineCache.swift */; }; 3BEDE9E249B3FA25D930C7413A84F2AC /* ImagePipelineTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 224B5231D5B87FDAB7ACBBB2F6FA6B80 /* ImagePipelineTask.swift */; }; 3CA5E256B6A8942E31110F3AE1E53E48 /* Pods-AltStore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F5287A98793EB9C5CEC3668161876AF /* Pods-AltStore-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -99,6 +98,7 @@ D735290FA0F470CD7967B60BCE2D3325 /* Pods-AltStoreCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DF2C09C7EAB8B5361EC909896A58A1A /* Pods-AltStoreCore-dummy.m */; }; DBBEBCE04C91414572AE60714A876047 /* ImagePublisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1C14AD68CA78C990AA5EF08C771AE5D /* ImagePublisher.swift */; }; E295B872DAEC1B42A73D1D2F5EBEFBAF /* FetchImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86B18D44B306CF8504490ACC527E88FC /* FetchImage.swift */; }; + E735E8EBF63B95AFB6CF67266C698E69 /* STPrivilegedTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 426F3D0BE037C85C934A1C2F5C761853 /* STPrivilegedTask.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; E74667B2CC4461D370AD6C7F5AD56FF2 /* ImageEncoders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FD3D710BE1D107B507CB6586BA0029D /* ImageEncoders.swift */; }; EB562D3E5AD9C37B353B90760AC22D61 /* TaskLoadData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 879D6E4D767C0CD5C4D03FBC5BC38661 /* TaskLoadData.swift */; }; EBA57896E0DD5F79340572DF549563C8 /* ImageDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF660618380BE182BE67EC08F00618BC /* ImageDecoding.swift */; }; @@ -916,7 +916,7 @@ LastUpgradeCheck = 1300; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 11.0"; + compatibilityVersion = "Xcode 13.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -1093,7 +1093,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3826A30459DE5A0E96693170CED95052 /* STPrivilegedTask.m in Sources */, + E735E8EBF63B95AFB6CF67266C698E69 /* STPrivilegedTask.m in Sources */, 1BF697A8040A30EFCE68604CC0852E0D /* STPrivilegedTask-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1177,6 +1177,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/KeychainAccess/KeychainAccess.modulemap"; PRODUCT_MODULE_NAME = KeychainAccess; PRODUCT_NAME = KeychainAccess; @@ -1214,7 +1215,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.8; + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/STPrivilegedTask/STPrivilegedTask.modulemap"; PRODUCT_MODULE_NAME = STPrivilegedTask; PRODUCT_NAME = STPrivilegedTask; @@ -1239,6 +1240,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MACOSX_DEPLOYMENT_TARGET = 11.0; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -1334,6 +1336,7 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/Pods-AltStore/Pods-AltStore.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; @@ -1371,6 +1374,7 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/Pods-AltStoreCore/Pods-AltStoreCore.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; @@ -1408,6 +1412,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/Nuke/Nuke.modulemap"; PRODUCT_MODULE_NAME = Nuke; PRODUCT_NAME = Nuke; @@ -1445,6 +1450,7 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/Pods-AltStore/Pods-AltStore.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; @@ -1474,7 +1480,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 11.0; SDKROOT = macosx; }; name = Debug; @@ -1500,6 +1506,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/KeychainAccess/KeychainAccess.modulemap"; PRODUCT_MODULE_NAME = KeychainAccess; PRODUCT_NAME = KeychainAccess; @@ -1537,7 +1544,7 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 11; + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/Pods-AltServer/Pods-AltServer.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; @@ -1575,7 +1582,7 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 11; + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/Pods-AltServer/Pods-AltServer.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; @@ -1611,6 +1618,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/Nuke/Nuke.modulemap"; PRODUCT_MODULE_NAME = Nuke; PRODUCT_NAME = Nuke; @@ -1638,7 +1646,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 11.0; SDKROOT = macosx; }; name = Release; @@ -1729,7 +1737,7 @@ "@executable_path/../Frameworks", "@loader_path/Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.8; + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/STPrivilegedTask/STPrivilegedTask.modulemap"; PRODUCT_MODULE_NAME = STPrivilegedTask; PRODUCT_NAME = STPrivilegedTask; @@ -1754,6 +1762,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MACOSX_DEPLOYMENT_TARGET = 11.0; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; @@ -1783,6 +1792,7 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 11.0; MODULEMAP_FILE = "Target Support Files/Pods-AltStoreCore/Pods-AltStoreCore.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; diff --git a/Pods/STPrivilegedTask/LICENSE b/Pods/STPrivilegedTask/LICENSE index 61b39da5..73102b80 100644 --- a/Pods/STPrivilegedTask/LICENSE +++ b/Pods/STPrivilegedTask/LICENSE @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2009, Sveinbjorn Thordarson +Copyright (c) 2008-2021, Sveinbjorn Thordarson All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/Pods/STPrivilegedTask/README.md b/Pods/STPrivilegedTask/README.md index 2bde9b43..b6c08ae3 100644 --- a/Pods/STPrivilegedTask/README.md +++ b/Pods/STPrivilegedTask/README.md @@ -1,8 +1,10 @@ -# STPrivilegedTask - Objective C class +# STPrivilegedTask - Objective-C class -An NSTask-like wrapper around [AuthorizationExecuteWithPrivileges()](https://developer.apple.com/library/mac/documentation/Security/Reference/authorization_ref/#//apple_ref/c/func/AuthorizationExecuteWithPrivileges) in the Security API to run shell commands with root privileges in Mac OS X. +An NSTask-like wrapper class around [AuthorizationExecuteWithPrivileges()](https://developer.apple.com/library/mac/documentation/Security/Reference/authorization_ref/#//apple_ref/c/func/AuthorizationExecuteWithPrivileges) +in the macOS Security API to run shell commands with root privileges. -STPrivilegedTask was created a long time ago. It has now been updated to support ARC and is available via CocoaPods. +STPrivilegedTask was created a long time ago. It has been updated over the years to work with the latest +versions of macOS and is available via [CocoaPods](https://cocoapods.org). ## Examples @@ -10,7 +12,7 @@ STPrivilegedTask was created a long time ago. It has now been updated to support ```objective-c // Create task -STPrivilegedTask *privilegedTask = [[STPrivilegedTask alloc] init]; +STPrivilegedTask *privilegedTask = [STPrivilegedTask new]; [privilegedTask setLaunchPath:@"/usr/bin/touch"]; [privilegedTask setArguments:@[@"/etc/my_test_file"]]; @@ -18,7 +20,7 @@ STPrivilegedTask *privilegedTask = [[STPrivilegedTask alloc] init]; // NSString *path = [[NSBundle mainBundle] resourcePath]; // [privilegedTask setCurrentDirectoryPath:path]; -// Launch it, user is prompted for password +// Launch it, user is prompted for password (blocking) OSStatus err = [privilegedTask launch]; if (err == errAuthorizationSuccess) { NSLog(@"Task successfully launched"); @@ -30,7 +32,8 @@ else { NSLog(@"Something went wrong"); } ``` -See [Authorization.h](http://www.opensource.apple.com/source/libsecurity_authorization/libsecurity_authorization-36329/lib/Authorization.h) for a list of possible error codes. +See [Authorization.h](http://www.opensource.apple.com/source/libsecurity_authorization/libsecurity_authorization-36329/lib/Authorization.h) +for a list of possible error codes. ### Launch task one-liner @@ -45,9 +48,9 @@ OSStatus err = [STPrivilegedTask launchedPrivilegedTaskWithLaunchPath:@"/bin/sh" ### Getting task output ```objective-c -// ... launch task +// ... Launch task -[privilegedTask waitUntilExit]; +[privilegedTask waitUntilExit]; // This is blocking // Read output file handle for data NSData *outputData = [[privilegedTask outputFileHandle] readDataToEndOfFile]; @@ -59,28 +62,31 @@ NSString *outputString = [[NSString alloc] initWithData:outputData encoding:NSUT ```objective-c -// ... launch task +// ... Launch task NSFileHandle *readHandle = [privilegedTask outputFileHandle]; -[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getOutputData:) name:NSFileHandleReadCompletionNotification object:readHandle]; +[[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(getOutputData:) + name:NSFileHandleReadCompletionNotification + object:readHandle]; [readHandle readInBackgroundAndNotify]; // ... - (void)getOutputData:(NSNotification *)aNotification { - //get data from notification + // Get data from notification NSData *data = [[aNotification userInfo] objectForKey:NSFileHandleNotificationDataItem]; - //make sure there's actual data + // Make sure there's actual data if ([data length]) { - // do something with the data + // Do something with the data NSString *outputString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - NSLog(outputString); + NSLog(@"%@", outputString); - // go read more data in the background + // Go read more data in the background [[aNotification object] readInBackgroundAndNotify]; } else { - // do something else + // Do something else } } ``` @@ -90,14 +96,17 @@ NSFileHandle *readHandle = [privilegedTask outputFileHandle]; You can observe STPrivilegedTaskDidTerminateNotification: ```objective-c -[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(privilegedTaskFinished:) name:STPrivilegedTaskDidTerminateNotification object:nil]; +[[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(privilegedTaskFinished:) + name:STPrivilegedTaskDidTerminateNotification + object:nil]; - (void)privilegedTaskFinished:(NSNotification *)aNotification { - // do something + // Do something } ``` -Or alternately, set a termination handler: +Or alternatively, set a termination handler: ```objective-c privilegedTask.terminationHandler = ^(STPrivilegedTask *privilegedTask) { @@ -110,17 +119,17 @@ privilegedTask.terminationHandler = ^(STPrivilegedTask *privilegedTask) { ```objective-c // ... Create your own AuthorizationRef -[STPriviledTask launchedPrivilegedTaskWithLaunchPath:@"/bin/sh" - arguments:@"/path/to/script" - currentDirectory:@"/" - authorization:authRef] +[STPrivilegedTask launchedPrivilegedTaskWithLaunchPath:@"/bin/sh" + arguments:@"/path/to/script" + currentDirectory:@"/" + authorization:authRef] ``` ### AuthorizationExecuteWithPrivileges() is deprecated -[AuthorizationExecuteWithPrivileges()](https://developer.apple.com/library/mac/documentation/Security/Reference/authorization_ref/#//apple_ref/c/func/AuthorizationExecuteWithPrivileges) is deprecated as of macOS 10.7 but remains available -in 10.14 Mojave. If you want to be future-proof, here's how you check if STPrivilegedTask -works in the running version of macOS: +[AuthorizationExecuteWithPrivileges()](https://developer.apple.com/library/mac/documentation/Security/Reference/authorization_ref/#//apple_ref/c/func/AuthorizationExecuteWithPrivileges) +is deprecated as of macOS 10.7 but still remains available in macOS 12 "Monterey". If you want to be future-proof, +here's how you check if STPrivilegedTask works in the running version of macOS: ```objective-c OSStatus err = [privilegedTask launch]; @@ -164,7 +173,7 @@ It then presents the output of the script in a window, along with the exit code. ## BSD License -Copyright (c) Sveinbjorn Thordarson <sveinbjorn@sveinbjorn.org> +Copyright (c) 2008-2021 Sveinbjorn Thordarson <sveinbjorn@sveinbjorn.org> All rights reserved. Redistribution and use in source and binary forms, with or without modification, diff --git a/Pods/STPrivilegedTask/STPrivilegedTask.h b/Pods/STPrivilegedTask/STPrivilegedTask.h index 18f4da17..66aebe69 100755 --- a/Pods/STPrivilegedTask/STPrivilegedTask.h +++ b/Pods/STPrivilegedTask/STPrivilegedTask.h @@ -1,29 +1,29 @@ /* - # STPrivilegedTask - NSTask-like wrapper around AuthorizationExecuteWithPrivileges - # Copyright (C) 2009-2017 Sveinbjorn Thordarson - # - # BSD License - # Redistribution and use in source and binary forms, with or without - # modification, are permitted provided that the following conditions are met: - # * Redistributions of source code must retain the above copyright - # notice, this list of conditions and the following disclaimer. - # * Redistributions in binary form must reproduce the above copyright - # notice, this list of conditions and the following disclaimer in the - # documentation and/or other materials provided with the distribution. - # * Neither the name of the copyright holder nor that of any other - # contributors may be used to endorse or promote products - # derived from this software without specific prior written permission. - # - # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - # DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + STPrivilegedTask - NSTask-like wrapper around AuthorizationExecuteWithPrivileges + Copyright (C) 2008-2021 Sveinbjorn Thordarson + + BSD License + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor that of any other + contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #import diff --git a/Pods/STPrivilegedTask/STPrivilegedTask.m b/Pods/STPrivilegedTask/STPrivilegedTask.m index ce326d70..3d2173fe 100755 --- a/Pods/STPrivilegedTask/STPrivilegedTask.m +++ b/Pods/STPrivilegedTask/STPrivilegedTask.m @@ -1,30 +1,30 @@ /* - # STPrivilegedTask - NSTask-like wrapper around AuthorizationExecuteWithPrivileges - # Copyright (C) 2009-2017 Sveinbjorn Thordarson - # - # BSD License - # Redistribution and use in source and binary forms, with or without - # modification, are permitted provided that the following conditions are met: - # * Redistributions of source code must retain the above copyright - # notice, this list of conditions and the following disclaimer. - # * Redistributions in binary form must reproduce the above copyright - # notice, this list of conditions and the following disclaimer in the - # documentation and/or other materials provided with the distribution. - # * Neither the name of the copyright holder nor that of any other - # contributors may be used to endorse or promote products - # derived from this software without specific prior written permission. - # - # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - # DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ + STPrivilegedTask - NSTask-like wrapper around AuthorizationExecuteWithPrivileges + Copyright (C) 2008-2021 Sveinbjorn Thordarson + + BSD License + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor that of any other + contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ #import "STPrivilegedTask.h" @@ -37,8 +37,8 @@ // New error code denoting that AuthorizationExecuteWithPrivileges no longer exists OSStatus const errAuthorizationFnNoLongerExists = -70001; -// Create fn pointer to AuthorizationExecuteWithPrivileges in case -// it doesn't exist in this version of MacOS +// Create fn pointer to AuthorizationExecuteWithPrivileges +// in case it doesn't exist in this version of macOS static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const char *pathToTool, AuthorizationFlags options, char * const *arguments, FILE **communicationsPipe) = NULL; @@ -48,8 +48,7 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const NSTimer *_checkStatusTimer; } -+ (void)initialize; -{ ++ (void)initialize { // On 10.7, AuthorizationExecuteWithPrivileges is deprecated. We want // to still use it since there's no good alternative (without requiring // code signing). We'll look up the function through dyld and fail if @@ -64,8 +63,7 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const #pragma clang diagnostic pop } -- (instancetype)init -{ +- (instancetype)init { self = [super init]; if (self) { _launchPath = nil; @@ -80,8 +78,7 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const return self; } -- (instancetype)initWithLaunchPath:(NSString *)path -{ +- (instancetype)initWithLaunchPath:(NSString *)path { self = [self init]; if (self) { self.launchPath = path; @@ -89,8 +86,8 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const return self; } -- (instancetype)initWithLaunchPath:(NSString *)path arguments:(NSArray *)args -{ +- (instancetype)initWithLaunchPath:(NSString *)path + arguments:(NSArray *)args { self = [self initWithLaunchPath:path]; if (self) { self.arguments = args; @@ -98,8 +95,9 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const return self; } -- (instancetype)initWithLaunchPath:(NSString *)path arguments:(NSArray *)args currentDirectory:(NSString *)cwd -{ +- (instancetype)initWithLaunchPath:(NSString *)path + arguments:(NSArray *)args + currentDirectory:(NSString *)cwd { self = [self initWithLaunchPath:path arguments:args]; if (self) { self.currentDirectoryPath = cwd; @@ -117,32 +115,33 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const #pragma mark - -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path -{ ++ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path { STPrivilegedTask *task = [[STPrivilegedTask alloc] initWithLaunchPath:path]; [task launch]; [task waitUntilExit]; return task; } -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path arguments:(NSArray *)args -{ ++ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path arguments:(NSArray *)args { STPrivilegedTask *task = [[STPrivilegedTask alloc] initWithLaunchPath:path arguments:args]; [task launch]; [task waitUntilExit]; return task; } -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path arguments:(NSArray *)args currentDirectory:(NSString *)cwd -{ ++ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path + arguments:(NSArray *)args + currentDirectory:(NSString *)cwd { STPrivilegedTask *task = [[STPrivilegedTask alloc] initWithLaunchPath:path arguments:args currentDirectory:cwd]; [task launch]; [task waitUntilExit]; return task; } -+ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path arguments:(NSArray *)args currentDirectory:(NSString *)cwd authorization:(AuthorizationRef)authorization -{ ++ (STPrivilegedTask *)launchedPrivilegedTaskWithLaunchPath:(NSString *)path + arguments:(NSArray *)args + currentDirectory:(NSString *)cwd + authorization:(AuthorizationRef)authorization { STPrivilegedTask *task = [[STPrivilegedTask alloc] initWithLaunchPath:path arguments:args currentDirectory:cwd]; [task launchWithAuthorization:authorization]; [task waitUntilExit]; @@ -152,8 +151,7 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const # pragma mark - // return 0 for success -- (OSStatus)launch -{ +- (OSStatus)launch { if (_isRunning) { NSLog(@"Task already running: %@", [self description]); return 0; @@ -172,22 +170,19 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const AuthorizationRights myRights = { 1, &myItems }; AuthorizationFlags flags = kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagPreAuthorize | kAuthorizationFlagExtendRights; - // Use Apple's Authentication Manager APIs to get an Authorization Reference - // These Apple APIs are quite possibly the most horrible of the Mac OS X APIs - - // create authorization reference + // Use Apple's Authentication Manager API to create an Authorization Reference err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &authorizationRef); if (err != errAuthorizationSuccess) { return err; } - // pre-authorize the privileged operation + // Pre-authorize the privileged operation err = AuthorizationCopyRights(authorizationRef, &myRights, kAuthorizationEmptyEnvironment, flags, NULL); if (err != errAuthorizationSuccess) { return err; } - // OK, at this point we have received authorization for the task. + // OK, at this point we have received authorization for the task so we launch it. err = [self launchWithAuthorization:authorizationRef]; return err; @@ -208,59 +203,60 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const } // Assuming the authorization is valid for the task. - // Let's prepare to launch it + // Let's prepare to launch it. NSArray *arguments = self.arguments; - NSUInteger numberOfArguments = [arguments count]; - char *args[numberOfArguments + 1]; + NSUInteger numArgs = [arguments count]; + char *args[numArgs + 1]; FILE *outputFile; const char *toolPath = [self.launchPath fileSystemRepresentation]; - // first, construct an array of c strings from NSArray w. arguments - for (int i = 0; i < numberOfArguments; i++) { + // First, construct an array of C strings w. all the arguments from NSArray + // This is the format required by AuthorizationExecuteWithPrivileges function + for (int i = 0; i < numArgs; i++) { NSString *argString = arguments[i]; const char *fsrep = [argString fileSystemRepresentation]; NSUInteger stringLength = strlen(fsrep); - - args[i] = malloc((stringLength + 1) * sizeof(char)); + args[i] = calloc((stringLength + 1), sizeof(char)); snprintf(args[i], stringLength + 1, "%s", fsrep); } - args[numberOfArguments] = NULL; + args[numArgs] = NULL; - // change to the current dir specified + // Change to the specified current working directory + // NB: This is process-wide and could interfere with the behaviour of concurrent tasks char *prevCwd = (char *)getcwd(nil, 0); chdir([self.currentDirectoryPath fileSystemRepresentation]); - //use Authorization Reference to execute script with privileges + // Use Authorization Reference to execute script with privileges. + // This is where the magic happens. OSStatus err = _AuthExecuteWithPrivsFn(authorization, toolPath, kAuthorizationFlagDefaults, args, &outputFile); // OK, now we're done executing, let's change back to old dir chdir(prevCwd); - // free the malloc'd argument strings - for (int i = 0; i < numberOfArguments; i++) { + // Free the alloc'd argument strings + for (int i = 0; i < numArgs; i++) { free(args[i]); } - // we return err if execution failed + // We return err if execution failed if (err != errAuthorizationSuccess) { return err; } else { _isRunning = YES; } - // get file handle for the command output + // Get file handle for the command output _outputFileHandle = [[NSFileHandle alloc] initWithFileDescriptor:fileno(outputFile) closeOnDealloc:YES]; _processIdentifier = fcntl(fileno(outputFile), F_GETOWN, 0); - // start monitoring task + // Start monitoring task _checkStatusTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(checkTaskStatus) userInfo:nil repeats:YES]; return err; } -- (void)terminate -{ +- (void)terminate { // This doesn't work without a PID, and we can't get one. Stupid Security API. // int ret = kill(pid, SIGKILL); // @@ -269,9 +265,8 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const // } } -// hang until task is done -- (void)waitUntilExit -{ +// Hang until task is done +- (void)waitUntilExit { if (!_isRunning) { NSLog(@"Task %@ is not running", [super description]); return; @@ -282,15 +277,14 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const int status; pid_t pid = 0; while ((pid = waitpid(_processIdentifier, &status, WNOHANG)) == 0) { - // do nothing + // Do nothing } - _terminationStatus = WEXITSTATUS(status); _isRunning = NO; + _terminationStatus = WEXITSTATUS(status); } -// check if task has terminated -- (void)checkTaskStatus -{ +// Check if task has terminated +- (void)checkTaskStatus { int status; pid_t pid = waitpid(_processIdentifier, &status, WNOHANG); if (pid != 0) { @@ -306,10 +300,9 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const #pragma mark - -+ (BOOL)authorizationFunctionAvailable -{ ++ (BOOL)authorizationFunctionAvailable { if (!_AuthExecuteWithPrivsFn) { - // This version of OS X has finally removed this function. Return with an error. + // This version of macOS has finally removed this function. return NO; } return YES; @@ -317,9 +310,8 @@ static OSStatus (*_AuthExecuteWithPrivsFn)(AuthorizationRef authorization, const #pragma mark - -// Nice description for debugging -- (NSString *)description -{ +// Nice description for debugging purposes +- (NSString *)description { NSString *commandDescription = [NSString stringWithString:self.launchPath]; for (NSString *arg in self.arguments) { diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.markdown b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.markdown index 1c8545ba..ca118eb9 100644 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.markdown @@ -5,7 +5,7 @@ This application makes use of the following third party libraries: BSD 3-Clause License -Copyright (c) 2009, Sveinbjorn Thordarson +Copyright (c) 2008-2021, Sveinbjorn Thordarson All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.plist b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.plist index 5a5bae4a..7c38e65f 100644 --- a/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-AltServer/Pods-AltServer-acknowledgements.plist @@ -16,7 +16,7 @@ FooterText BSD 3-Clause License -Copyright (c) 2009, Sveinbjorn Thordarson +Copyright (c) 2008-2021, Sveinbjorn Thordarson All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-Info.plist b/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-Info.plist index 3ee67e68..3fa062ac 100644 --- a/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-Info.plist +++ b/Pods/Target Support Files/STPrivilegedTask/STPrivilegedTask-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.0.7 + 1.0.8 CFBundleSignature ???? CFBundleVersion