From 62a64afda5f2ac3c15aab22c57fb24101e891f41 Mon Sep 17 00:00:00 2001 From: Mario Limonciello Date: Fri, 7 Jan 2022 17:28:42 -0600 Subject: [PATCH] fu-tool: put lockfile in user's cache directory if no permissions for /run --- src/fu-tool.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/fu-tool.c b/src/fu-tool.c index 8d7584168..985fe95f0 100644 --- a/src/fu-tool.c +++ b/src/fu-tool.c @@ -186,12 +186,21 @@ fu_util_lock(FuUtilPrivate *priv, GError **error) .l_type = F_WRLCK, .l_whence = SEEK_SET, }; - g_autofree gchar *lockdir = NULL; g_autofree gchar *lockfn = NULL; + gboolean use_user = FALSE; + +#ifdef HAVE_GETUID + if (getuid() != 0 || geteuid() != 0) + use_user = TRUE; +#endif /* open file */ - lockdir = fu_common_get_path(FU_PATH_KIND_LOCKDIR); - lockfn = g_build_filename(lockdir, "fwupdtool", NULL); + if (use_user) { + lockfn = fu_util_get_user_cache_path("fwupdtool"); + } else { + g_autofree gchar *lockdir = fu_common_get_path(FU_PATH_KIND_LOCKDIR); + lockfn = g_build_filename(lockdir, "fwupdtool", NULL); + } if (!fu_common_mkdir_parent(lockfn, error)) return FALSE; priv->lock_fd = g_open(lockfn, O_RDWR | O_CREAT, S_IRWXU);