From 37fe50fc9cfe400f969af7474dbe2bd705debe8f Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Tue, 30 Jun 2026 17:50:46 +0200 Subject: [PATCH] installation: Avoid races when caching the display name We specifically have to avoid holding the lock while calling flatpak_installation_get_dir_maybe_no_repo, so we just double check if it is unset. --- common/flatpak-installation.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/common/flatpak-installation.c b/common/flatpak-installation.c index 378a7faa7..629673df4 100644 --- a/common/flatpak-installation.c +++ b/common/flatpak-installation.c @@ -537,10 +537,17 @@ const char * flatpak_installation_get_display_name (FlatpakInstallation *self) { FlatpakInstallationPrivate *priv = flatpak_installation_get_instance_private (self); - g_autoptr(FlatpakDir) dir = flatpak_installation_get_dir_maybe_no_repo (self); if (priv->display_name == NULL) - priv->display_name = flatpak_dir_get_display_name (dir); + { + g_autoptr(FlatpakDir) d = flatpak_installation_get_dir_maybe_no_repo (self); + g_autofree char *name = flatpak_dir_get_display_name (d); + + G_LOCK (dir); + if (priv->display_name == NULL) + priv->display_name = g_steal_pointer (&name); + G_UNLOCK (dir); + } return (const char *) priv->display_name; }