Update to 1.19.2
Resolves: RHEL-74556
This commit is contained in:
parent
66b896b48e
commit
8e99a57a1d
1
.gitignore
vendored
1
.gitignore
vendored
@ -48,3 +48,4 @@
|
|||||||
/xdg-desktop-portal-1.18.2.tar.xz
|
/xdg-desktop-portal-1.18.2.tar.xz
|
||||||
/xdg-desktop-portal-1.18.4.tar.xz
|
/xdg-desktop-portal-1.18.4.tar.xz
|
||||||
/xdg-desktop-portal-1.19.1.tar.xz
|
/xdg-desktop-portal-1.19.1.tar.xz
|
||||||
|
/xdg-desktop-portal-1.19.2.tar.xz
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (xdg-desktop-portal-1.19.1.tar.xz) = c480cdc6fbbdeedbfe0e37ac463b6afa9127efa1b3e6c665c28e272c23f5d41e6f3f0e8e3c69c31d0829032a009bcf04643ba7f782332a3eccf591eca5c6dff4
|
SHA512 (xdg-desktop-portal-1.19.2.tar.xz) = 747b4788da5eb9db765389d20b70c8bd90e33dea5763888f09c7e031c92640cd4d231b925d61fe62a446040b6bc1ba3c2ca8e11a20e18585ddf0c4ebb8303864
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -8,7 +8,7 @@
|
|||||||
%global pipewire_version 0.2.90
|
%global pipewire_version 0.2.90
|
||||||
|
|
||||||
Name: xdg-desktop-portal
|
Name: xdg-desktop-portal
|
||||||
Version: 1.19.1
|
Version: 1.19.2
|
||||||
Release: %autorelease
|
Release: %autorelease
|
||||||
Summary: Portal frontend service to flatpak
|
Summary: Portal frontend service to flatpak
|
||||||
|
|
||||||
@ -17,12 +17,6 @@ License: LGPL-2.1-or-later
|
|||||||
URL: https://github.com/flatpak/xdg-desktop-portal/
|
URL: https://github.com/flatpak/xdg-desktop-portal/
|
||||||
Source0: https://github.com/flatpak/xdg-desktop-portal/releases/download/%{version}/%{name}-%{version}.tar.xz
|
Source0: https://github.com/flatpak/xdg-desktop-portal/releases/download/%{version}/%{name}-%{version}.tar.xz
|
||||||
|
|
||||||
# Backport of webextensions portal
|
|
||||||
# PR: https://github.com/flatpak/xdg-desktop-portal/pull/1537
|
|
||||||
Patch0: xdg-desktop-portal-webextensions.patch
|
|
||||||
# Camera: Fix permission check in OpenPipeWireRemote
|
|
||||||
# https://github.com/flatpak/xdg-desktop-portal/pull/1576
|
|
||||||
Patch1: xdp-fix-permission-check-in-openpipewireremote.patch
|
|
||||||
|
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
BuildRequires: gettext
|
BuildRequires: gettext
|
||||||
|
@ -1,81 +0,0 @@
|
|||||||
From 316b950becdf4b7b3bd3f443955d890b1abee0db Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michael Catanzaro <mcatanzaro@redhat.com>
|
|
||||||
Date: Wed, 15 Jan 2025 15:15:51 -0600
|
|
||||||
Subject: [PATCH] camera: fix permission check in OpenPipeWireRemote
|
|
||||||
|
|
||||||
6cd99b04d438b1de9b25c7bd928e541609904db3 changed the logic that the
|
|
||||||
camera portal uses to look up permissions for the AccessCamera method.
|
|
||||||
Applications first call AccessCamera to ensure they have camera
|
|
||||||
permission and to prompt the user if permission is missing, then they
|
|
||||||
call OpenPipeWireRemote, which fails if permission is missing. The
|
|
||||||
permission lookup logic needs to be the same in both places. Currently
|
|
||||||
when running Snapshot launched by GNOME Shell (rather than launched in a
|
|
||||||
terminal), Snapshot passes AccessCamera's permission check, then fails
|
|
||||||
OpenPipeWireRemote's permission check, causing camera access to be
|
|
||||||
denied without allowing the user to grant permission.
|
|
||||||
|
|
||||||
Also, since the same commit the code uses the XdpAppInfo on a secondary
|
|
||||||
thread. I suspect this is unsafe, and the original code avoided doing
|
|
||||||
so; therefore, let's be careful and move this logic to the main thread
|
|
||||||
so that the secondary thread only receives a copy of the app ID, as
|
|
||||||
before.
|
|
||||||
|
|
||||||
https://gitlab.gnome.org/GNOME/snapshot/-/issues/267
|
|
||||||
---
|
|
||||||
src/camera.c | 22 +++++++++++++---------
|
|
||||||
1 file changed, 13 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/camera.c b/src/camera.c
|
|
||||||
index 4224a0a7b..9b43b36d8 100644
|
|
||||||
--- a/src/camera.c
|
|
||||||
+++ b/src/camera.c
|
|
||||||
@@ -78,11 +78,7 @@ query_permission_sync (XdpRequest *request)
|
|
||||||
const char *app_id;
|
|
||||||
gboolean allowed;
|
|
||||||
|
|
||||||
- if (xdp_app_info_is_host (request->app_info))
|
|
||||||
- app_id = "";
|
|
||||||
- else
|
|
||||||
- app_id = (const char *)g_object_get_data (G_OBJECT (request), "app-id");
|
|
||||||
-
|
|
||||||
+ app_id = (const char *)g_object_get_data (G_OBJECT (request), "app-id");
|
|
||||||
permission = xdp_get_permission_sync (app_id, PERMISSION_TABLE, PERMISSION_DEVICE_CAMERA);
|
|
||||||
if (permission == XDP_PERMISSION_ASK || permission == XDP_PERMISSION_UNSET)
|
|
||||||
{
|
|
||||||
@@ -190,6 +186,16 @@ handle_access_camera_in_thread_func (GTask *task,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+static const char *
|
|
||||||
+app_id_from_app_info (XdpAppInfo *app_info)
|
|
||||||
+{
|
|
||||||
+ /* Automatically grant camera access to unsandboxed apps. */
|
|
||||||
+ if (xdp_app_info_is_host (app_info))
|
|
||||||
+ return "";
|
|
||||||
+
|
|
||||||
+ return xdp_app_info_get_id (app_info);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static gboolean
|
|
||||||
handle_access_camera (XdpDbusCamera *object,
|
|
||||||
GDBusMethodInvocation *invocation,
|
|
||||||
@@ -211,9 +217,7 @@ handle_access_camera (XdpDbusCamera *object,
|
|
||||||
|
|
||||||
REQUEST_AUTOLOCK (request);
|
|
||||||
|
|
||||||
- app_id = xdp_app_info_get_id (request->app_info);
|
|
||||||
-
|
|
||||||
-
|
|
||||||
+ app_id = app_id_from_app_info (request->app_info);
|
|
||||||
g_object_set_data_full (G_OBJECT (request), "app-id", g_strdup (app_id), g_free);
|
|
||||||
|
|
||||||
xdp_request_export (request, g_dbus_method_invocation_get_connection (invocation));
|
|
||||||
@@ -288,7 +292,7 @@ handle_open_pipewire_remote (XdpDbusCamera *object,
|
|
||||||
}
|
|
||||||
|
|
||||||
app_info = xdp_invocation_lookup_app_info_sync (invocation, NULL, &error);
|
|
||||||
- app_id = xdp_app_info_get_id (app_info);
|
|
||||||
+ app_id = app_id_from_app_info (app_info);
|
|
||||||
permission = xdp_get_permission_sync (app_id, PERMISSION_TABLE, PERMISSION_DEVICE_CAMERA);
|
|
||||||
if (permission != XDP_PERMISSION_YES)
|
|
||||||
{
|
|
Loading…
Reference in New Issue
Block a user