From b80afca177d93b1587134dce7149f43a156a85e4 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 18 Apr 2024 04:55:14 +0800 Subject: [PATCH] Wrap access of itemUrl in security scoping Signed-off-by: Claudio Cambra --- .../FileProviderUIExt/ShareViewController.swift | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareViewController.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareViewController.swift index e6d969e85..058708a65 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareViewController.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderUIExt/ShareViewController.swift @@ -47,6 +47,13 @@ class ShareViewController: NSViewController, ShareViewDataSourceUIDelegate { return } + Logger.shareViewController.info( + """ + Instantiated with itemIdentifiers: + \(itemIdentifiers.map { $0.rawValue }, privacy: .public) + """ + ) + Task { await processItemIdentifier(firstItem) } @@ -72,11 +79,16 @@ class ShareViewController: NSViewController, ShareViewDataSourceUIDelegate { do { let itemUrl = try await manager.getUserVisibleURL(for: itemIdentifier) + guard itemUrl.startAccessingSecurityScopedResource() else { + Logger.shareViewController.error("Could not access scoped resource for item url!") + return + } await updateDisplay(itemUrl: itemUrl) shareDataSource.uiDelegate = self shareDataSource.sharesTableView = tableView shareDataSource.loadItem(url: itemUrl) optionsView.dataSource = shareDataSource + itemUrl.stopAccessingSecurityScopedResource() } catch let error { let errorString = "Error processing item: \(error)" Logger.shareViewController.error("\(errorString, privacy: .public)")