Update package version to 1.22.1

This commit is contained in:
2026-06-21 11:34:48 +03:00
parent 325d31037d
commit 5e8786d6cf
3 changed files with 3 additions and 238 deletions
+3 -3
View File
@@ -1,7 +1,7 @@
name: xdg-desktop-portal
description: A portal frontend service for Flatpak and other desktop containment frameworks
version: 1.20.4
revision: 3
version: 1.22.1
revision: 1
url: https://flatpak.github.io/xdg-desktop-portal/
license: LGPL2.1-or-later
maintainers:
@@ -38,4 +38,4 @@ downloads:
- url: https://github.com/flatpak/xdg-desktop-portal/releases/download/${BPM_PKG_VERSION}/xdg-desktop-portal-${BPM_PKG_VERSION}.tar.xz
extract_to: ${BPM_SOURCE}
extract_strip_components: 1
checksum: 9528eb3b060b88ac82f294fbdc6af5f4d3adfa42575f2cd816cab3d3e0a7a68c
checksum: d4879ddb3d65ff1a8f19187497e6f13dc5d267bcac404a5d501218be355753d3
-7
View File
@@ -2,13 +2,6 @@
# BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE
# BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT
# The prepare function is executed in the root of the temp directory
# This function is used for putting downloaded files to the correct location or applying patches
prepare() {
cd "$BPM_SOURCE"
patch -Np1 -i "$BPM_WORKDIR"/1713.patch
}
# The build function is executed in the source directory
# This function is used to compile the source code
build() {
-228
View File
@@ -1,228 +0,0 @@
From 50985ada2c1c9327ad59992cc0fa4ea7f9396d2c Mon Sep 17 00:00:00 2001
From: Sebastian Wick <[email protected]>
Date: Tue, 3 Jun 2025 22:10:24 +0200
Subject: [PATCH 1/2] utils: Differentiate between pidfd and /proc/$pid dirfds
It's really confusing when those different things are all called pidfds.
---
src/xdp-app-info.c | 2 +-
src/xdp-utils.c | 23 ++++++++++++-----------
src/xdp-utils.h | 2 +-
3 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/src/xdp-app-info.c b/src/xdp-app-info.c
index 1eb7b2bf1..d924f2167 100644
--- a/src/xdp-app-info.c
+++ b/src/xdp-app-info.c
@@ -393,7 +393,7 @@ xdp_app_info_get_pidns (XdpAppInfo *app_info,
return FALSE;
}
- if (!xdp_pidfd_get_namespace (priv->pidfd, &ns, error))
+ if (!xdp_pid_dirfd_get_pidns (priv->pidfd, &ns, error))
return FALSE;
priv->pidns_id = ns;
diff --git a/src/xdp-utils.c b/src/xdp-utils.c
index 902bb3199..f22cad95a 100644
--- a/src/xdp-utils.c
+++ b/src/xdp-utils.c
@@ -908,17 +908,17 @@ xdp_pidfds_to_pids (const int *pidfds,
}
gboolean
-xdp_pidfd_get_namespace (int pidfd,
+xdp_pid_dirfd_get_pidns (int pid_dirfd,
ino_t *ns,
GError **error)
{
struct stat st;
int r;
- g_return_val_if_fail (pidfd >= 0, FALSE);
+ g_return_val_if_fail (pid_dirfd >= 0, FALSE);
g_return_val_if_fail (ns != NULL, FALSE);
- r = fstatat (pidfd, "ns/pid", &st, 0);
+ r = fstatat (pid_dirfd, "ns/pid", &st, 0);
if (r == -1)
{
g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno),
@@ -966,7 +966,7 @@ parse_status_field_uid (const char *val,
}
static int
-parse_status_file (int pid_fd,
+parse_status_file (int pid_dirfd,
pid_t *pid_out,
uid_t *uid_out)
{
@@ -981,9 +981,9 @@ parse_status_file (int pid_fd,
int fd;
int r = 0;
- g_return_val_if_fail (pid_fd > -1, FALSE);
+ g_return_val_if_fail (pid_dirfd > -1, FALSE);
- fd = openat (pid_fd, "status", O_RDONLY | O_CLOEXEC | O_NOCTTY);
+ fd = openat (pid_dirfd, "status", O_RDONLY | O_CLOEXEC | O_NOCTTY);
if (fd == -1)
return -errno;
@@ -1074,7 +1074,7 @@ xdp_map_pids_full (DIR *proc,
while ((de = readdir (proc)) != NULL)
{
- g_autofd int pid_fd = -1;
+ g_autofd int pid_dirfd = -1;
pid_t outside = 0;
pid_t inside = 0;
uid_t uid = 0;
@@ -1085,11 +1085,12 @@ xdp_map_pids_full (DIR *proc,
if (de->d_type != DT_DIR)
continue;
- pid_fd = openat (dirfd (proc), de->d_name, O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_CLOEXEC | O_NOCTTY);
- if (pid_fd == -1)
+ pid_dirfd = openat (dirfd (proc), de->d_name,
+ O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_CLOEXEC | O_NOCTTY);
+ if (pid_dirfd == -1)
continue;
- if (!xdp_pidfd_get_namespace (pid_fd, &ns, NULL))
+ if (!xdp_pid_dirfd_get_pidns (pid_dirfd, &ns, NULL))
continue;
if (pidns != ns)
@@ -1099,7 +1100,7 @@ xdp_map_pids_full (DIR *proc,
if (r < 0)
continue;
- r = parse_status_file (pid_fd, &inside, &uid);
+ r = parse_status_file (pid_dirfd, &inside, &uid);
if (r < 0)
continue;
diff --git a/src/xdp-utils.h b/src/xdp-utils.h
index fa1c6c7c3..74105a6a9 100644
--- a/src/xdp-utils.h
+++ b/src/xdp-utils.h
@@ -130,7 +130,7 @@ gboolean xdp_pidfds_to_pids (const int *pidfds,
gint count,
GError **error);
-gboolean xdp_pidfd_get_namespace (int pidfd,
+gboolean xdp_pid_dirfd_get_pidns (int pid_dirfd,
ino_t *ns,
GError **error);
From d7f8e732c4dbf3d3444f450979c00f5aaf59f02c Mon Sep 17 00:00:00 2001
From: Sebastian Wick <[email protected]>
Date: Tue, 3 Jun 2025 22:19:24 +0200
Subject: [PATCH 2/2] utils: Add new function to get the pidns from an actual
pidfd
Calling xdp_pid_dirfd_get_pidns with an actual pidfd, as is done in
XdpAppInfo.get_pidns will fail because it expects a dirfd of /proc/$PID.
The new function knows how to get the pidns from a pidfd.
---
src/xdp-app-info.c | 2 +-
src/xdp-utils.c | 39 +++++++++++++++++++++++++++++++++++++++
src/xdp-utils.h | 6 +++---
3 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/src/xdp-app-info.c b/src/xdp-app-info.c
index d924f2167..7bbb8f38c 100644
--- a/src/xdp-app-info.c
+++ b/src/xdp-app-info.c
@@ -393,7 +393,7 @@ xdp_app_info_get_pidns (XdpAppInfo *app_info,
return FALSE;
}
- if (!xdp_pid_dirfd_get_pidns (priv->pidfd, &ns, error))
+ if (!xdp_pidfd_get_pidns (priv->pidfd, &ns, error))
return FALSE;
priv->pidns_id = ns;
diff --git a/src/xdp-utils.c b/src/xdp-utils.c
index f22cad95a..a9f094666 100644
--- a/src/xdp-utils.c
+++ b/src/xdp-utils.c
@@ -29,6 +29,7 @@
#include <stdint.h>
#include <stdio.h>
#include <string.h>
+#include <sys/ioctl.h>
#include <gio/gio.h>
#include <gio/gunixoutputstream.h>
@@ -39,6 +40,9 @@
#define DBUS_INTERFACE_DBUS DBUS_NAME_DBUS
#define DBUS_PATH_DBUS "/org/freedesktop/DBus"
+#define PIDFS_IOCTL_MAGIC 0xFF
+#define PIDFD_GET_PID_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 5)
+
/* Based on g_mkstemp from glib */
gint
xdp_mkstempat (int dir_fd,
@@ -908,6 +912,41 @@ xdp_pidfds_to_pids (const int *pidfds,
}
gboolean
+xdp_pidfd_get_pidns (int pidfd,
+ ino_t *ns,
+ GError **error)
+{
+ g_autofd int pidns_fd = -1;
+ struct stat st;
+
+ g_return_val_if_fail (pidfd >= 0, FALSE);
+ g_return_val_if_fail (ns != NULL, FALSE);
+
+ pidns_fd = ioctl (pidfd, PIDFD_GET_PID_NAMESPACE, 0);
+ if (pidns_fd < 0)
+ {
+ g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno),
+ "PIDFD_GET_PID_NAMESPACE ioctl failed: %s",
+ g_strerror (errno));
+ return FALSE;
+ }
+
+ if (fstat (pidns_fd, &st) != 0)
+ {
+ g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno),
+ "fstat on pidns fd failed: %s",
+ g_strerror (errno));
+ return FALSE;
+ }
+
+ /* The inode number (together with the device ID) encode
+ * the identity of the pid namespace, see namespaces(7)
+ */
+ *ns = st.st_ino;
+ return TRUE;
+}
+
+static gboolean
xdp_pid_dirfd_get_pidns (int pid_dirfd,
ino_t *ns,
GError **error)
diff --git a/src/xdp-utils.h b/src/xdp-utils.h
index 74105a6a9..1c339c28d 100644
--- a/src/xdp-utils.h
+++ b/src/xdp-utils.h
@@ -130,9 +130,9 @@ gboolean xdp_pidfds_to_pids (const int *pidfds,
gint count,
GError **error);
-gboolean xdp_pid_dirfd_get_pidns (int pid_dirfd,
- ino_t *ns,
- GError **error);
+gboolean xdp_pidfd_get_pidns (int pidfd,
+ ino_t *ns,
+ GError **error);
gboolean xdp_map_pids_full (DIR *proc,
ino_t pidns,