macOS: Detect sandboxed state for command line apps

The documentation says that if we "pass a URL to the main
executable of a bundle, the bundle as a whole is generally
recognized.". By passing the executable instead of the
bundle we include command line applications that don't
have a app bundle folder (but have an embedded Info.plist).

Pick-to: 6.2 6.1 5.15
Change-Id: I3a2f145c1ec6e16607e9c04baf08678d5dea0b81
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Tor Arne Vestbø 2021-06-14 16:26:44 +02:00
parent 01ff216c82
commit 20f835329a

View File

@ -401,8 +401,8 @@ bool qt_apple_isSandboxed()
{ {
static bool isSandboxed = []() { static bool isSandboxed = []() {
QCFType<SecStaticCodeRef> staticCode = nullptr; QCFType<SecStaticCodeRef> staticCode = nullptr;
NSURL *bundleUrl = [[NSBundle mainBundle] bundleURL]; NSURL *executableUrl = NSBundle.mainBundle.executableURL;
if (SecStaticCodeCreateWithPath((__bridge CFURLRef)bundleUrl, if (SecStaticCodeCreateWithPath((__bridge CFURLRef)executableUrl,
kSecCSDefaultFlags, &staticCode) != errSecSuccess) kSecCSDefaultFlags, &staticCode) != errSecSuccess)
return false; return false;