diff options
Diffstat (limited to 'src/polkitbackend/polkitd.c')
-rw-r--r-- | src/polkitbackend/polkitd.c | 11 |
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); |