summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuca Boccassi <luca.boccassi@gmail.com>2023-04-05 12:25:17 +0000
committerJan Rybar <jrybar@redhat.com>2023-04-05 12:25:17 +0000
commit410233547dec6ff9c9767305e4766c549a8d624e (patch)
tree5da0c51467d47e3c8e8c19894182d61ff3d39fb6 /src
parentb6169f3113b3ce5ed822e66adcc962850c24660a (diff)
downloadpolkit-410233547dec6ff9c9767305e4766c549a8d624e.tar.gz
systemd: set User/Group and don't change uid/gid if already set
Diffstat (limited to 'src')
-rw-r--r--src/polkitbackend/polkitd.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/polkitbackend/polkitd.c b/src/polkitbackend/polkitd.c
index c3ec32f..d63aae2 100644
--- a/src/polkitbackend/polkitd.c
+++ b/src/polkitbackend/polkitd.c
@@ -117,6 +117,14 @@ become_user (const gchar *user,
goto out;
}
+ if ((geteuid () == pw->pw_uid) && (getuid () == pw->pw_uid) &&
+ (getegid () == pw->pw_gid) && (getgid () == pw->pw_gid))
+ {
+ /* already running as user */
+ ret = TRUE;
+ goto out;
+ }
+
if (setgroups (0, NULL) != 0)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
@@ -151,6 +159,7 @@ become_user (const gchar *user,
ret = TRUE;
+ g_print ("Successfully changed to user %s\n", user);
out:
return ret;
@@ -212,8 +221,6 @@ main (int argc,
goto out;
}
- g_print ("Successfully changed to user %s\n", POLKITD_USER);
-
if (g_getenv ("PATH") == NULL)
g_setenv ("PATH", "/usr/bin:/bin:/usr/sbin:/sbin", TRUE);