polkit/pkexec.patch

69 lines
2.0 KiB
Diff

From: Andreas Schwab <schwab@suse.de>
Subject: pkexec: allow --version and --help even if not setuid
Don't check for setuid invocation until after parsing command line, to allow
running uninstalled pkexec with --help or --version. This also helps
building packages that want to check for pkexec in an emulated environment
that does not support setuid invocation (eg. QEMU linux-user).
Index: polkit-0.113/src/programs/pkexec.c
===================================================================
--- polkit-0.113.orig/src/programs/pkexec.c
+++ polkit-0.113/src/programs/pkexec.c
@@ -503,27 +503,6 @@ main (int argc, char *argv[])
opt_user = NULL;
local_agent_handle = NULL;
- /* check for correct invocation */
- if (geteuid () != 0)
- {
- g_printerr ("pkexec must be setuid root\n");
- goto out;
- }
-
- original_user_name = g_strdup (g_get_user_name ());
- if (original_user_name == NULL)
- {
- g_printerr ("Error getting user name.\n");
- goto out;
- }
-
- if ((original_cwd = g_get_current_dir ()) == NULL)
- {
- g_printerr ("Error getting cwd: %s\n",
- g_strerror (errno));
- goto out;
- }
-
/* First process options and find the command-line to invoke. Avoid using fancy library routines
* that depend on environtment variables since we haven't cleared the environment just yet.
*/
@@ -579,6 +558,27 @@ main (int argc, char *argv[])
goto out;
}
+ /* check for correct invocation */
+ if (geteuid () != 0)
+ {
+ g_printerr ("pkexec must be setuid root\n");
+ goto out;
+ }
+
+ original_user_name = g_strdup (g_get_user_name ());
+ if (original_user_name == NULL)
+ {
+ g_printerr ("Error getting user name.\n");
+ goto out;
+ }
+
+ if ((original_cwd = g_get_current_dir ()) == NULL)
+ {
+ g_printerr ("Error getting cwd: %s\n",
+ g_strerror (errno));
+ goto out;
+ }
+
if (opt_user == NULL)
opt_user = g_strdup ("root");