From 6e655bf4b11bb0ac3bccbee112218b045b962fcf Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Sat, 7 Jun 2025 05:41:21 -0700 Subject: [PATCH] Sandbox: Fix missing file handler crash Apparently, NSURL path for fileURL can return nil if the resource no longer exists, or something. Better fail gracefully than cause a crash. Signed-off-by: Christopher Snowhill --- Utils/SandboxBroker.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Utils/SandboxBroker.m b/Utils/SandboxBroker.m index b3f1a3570..4da832fb0 100644 --- a/Utils/SandboxBroker.m +++ b/Utils/SandboxBroker.m @@ -100,6 +100,7 @@ static SandboxBroker *kSharedSandboxBroker = nil; if(![url isFileURL]) return url; NSString *s = [url path]; + if(!s) return NULL; // Cool, the resource no longer exists! NSRange fragmentRange = [s rangeOfString:@"#" options:NSBackwardsSearch]; @@ -270,6 +271,7 @@ static inline void dispatch_async_reentrant(dispatch_queue_t queue, dispatch_blo if(![fileUrl isFileURL]) return; NSURL *url = [SandboxBroker urlWithoutFragment:fileUrl]; + if(!url) return; dispatch_async_reentrant(dispatch_get_main_queue(), ^{ SandboxEntry *_entry = nil; @@ -422,7 +424,7 @@ static inline void dispatch_async_reentrant(dispatch_queue_t queue, dispatch_blo - (const void *)beginFolderAccess:(NSURL *)fileUrl { if(!fileUrl) return NULL; NSURL *folderUrl = [SandboxBroker urlWithoutFragment:fileUrl]; - if(![folderUrl isFileURL]) return NULL; + if(!folderUrl || ![folderUrl isFileURL]) return NULL; __block SandboxEntry *_entry = nil;