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