platform/upstream/polkit.git
12 years agoMove polkitd into src/polkitbackend
David Zeuthen [Fri, 25 May 2012 15:09:02 +0000 (11:09 -0400)]
Move polkitd into src/polkitbackend

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoUse g_unix_signal_add() from GLib 2.30
David Zeuthen [Fri, 25 May 2012 15:02:15 +0000 (11:02 -0400)]
Use g_unix_signal_add() from GLib 2.30

... instead of the one I wrote myself.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoClarify pkexec(1) variables
David Zeuthen [Thu, 24 May 2012 19:50:59 +0000 (15:50 -0400)]
Clarify pkexec(1) variables

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoCombine action and details parameters
David Zeuthen [Thu, 24 May 2012 18:51:46 +0000 (14:51 -0400)]
Combine action and details parameters

This also removes the ability to change detail parameters which is
actually a good thing. If we later need a way to change the
authentication message, we can always add something like
polkit.addAuthenticationMessageRule() so the user can register a
function returning a string.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoUse a condition variable to signal that runaway killer thread is ready
David Zeuthen [Thu, 24 May 2012 15:39:57 +0000 (11:39 -0400)]
Use a condition variable to signal that runaway killer thread is ready

... instead of the unsafe g_thread_yield() busy-wait loop.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoTerminate runaway scripts
David Zeuthen [Thu, 24 May 2012 15:26:34 +0000 (11:26 -0400)]
Terminate runaway scripts

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoUse "rules", not "scripts" to refer to files in rules.d
David Zeuthen [Wed, 23 May 2012 21:57:55 +0000 (17:57 -0400)]
Use "rules", not "scripts" to refer to files in rules.d

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoPass expanded identity list to the AuthenticationSession
David Zeuthen [Wed, 23 May 2012 21:44:43 +0000 (17:44 -0400)]
Pass expanded identity list to the AuthenticationSession

... otherwise it things like admin-identities being set to
["unix-group:session"] won't work.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd default rules
David Zeuthen [Wed, 23 May 2012 21:30:51 +0000 (17:30 -0400)]
Add default rules

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoStore private binaries in /usr/lib/polkit-1 instead of /usr/libexec
David Zeuthen [Wed, 23 May 2012 21:11:29 +0000 (17:11 -0400)]
Store private binaries in /usr/lib/polkit-1 instead of /usr/libexec

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoMention systemd(1) in the polkitd(8) man page
David Zeuthen [Wed, 23 May 2012 20:49:20 +0000 (16:49 -0400)]
Mention systemd(1) in the polkitd(8) man page

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoNuke polkitbackend library, localauthority backend and extension system
David Zeuthen [Wed, 23 May 2012 20:39:25 +0000 (16:39 -0400)]
Nuke polkitbackend library, localauthority backend and extension system

Any backend can now be implemented in JavaScript (if so desired) so we
don't need any of this any more.

Note that the libpolkitbackend library was never declared stable (the
preprocessor symbol POLKIT_BACKEND_I_KNOW_API_IS_SUBJECT_TO_CHANGE had
to be defined) so removing it is not an API/ABI break.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd a systemd .service file
David Zeuthen [Wed, 23 May 2012 20:16:20 +0000 (16:16 -0400)]
Add a systemd .service file

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoFix distcheck
David Zeuthen [Wed, 23 May 2012 19:58:15 +0000 (15:58 -0400)]
Fix distcheck

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoRename --enable-systemd to --enable-libsystemd-login
David Zeuthen [Wed, 23 May 2012 19:53:35 +0000 (15:53 -0400)]
Rename --enable-systemd to --enable-libsystemd-login

It's useful to be more specific because we also want an option to
install a systemd .service file which you may not want even if you are
using libsystemd-login...

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd real-world example featuring udisks2 and the drive.* variables it passes
David Zeuthen [Wed, 23 May 2012 18:12:38 +0000 (14:12 -0400)]
Add real-world example featuring udisks2 and the drive.* variables it passes

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoMake polkit_details_insert() remove the key if passed value is NULL
David Zeuthen [Wed, 23 May 2012 17:37:21 +0000 (13:37 -0400)]
Make polkit_details_insert() remove the key if passed value is NULL

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoUse <variablelist> instead of <informaltable> for Subject attributes
David Zeuthen [Wed, 23 May 2012 16:57:34 +0000 (12:57 -0400)]
Use <variablelist> instead of <informaltable> for Subject attributes

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoMention details["polkit.message"] and add an example using details
David Zeuthen [Wed, 23 May 2012 16:51:19 +0000 (12:51 -0400)]
Mention details["polkit.message"] and add an example using details

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoFix a couple typos in the docs
David Zeuthen [Wed, 23 May 2012 16:14:44 +0000 (12:14 -0400)]
Fix a couple typos in the docs

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoFix speling
David Zeuthen [Tue, 22 May 2012 19:45:06 +0000 (15:45 -0400)]
Fix speling

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agopolkitd: add reference to polkit(8) from its man page
David Zeuthen [Tue, 22 May 2012 18:18:19 +0000 (14:18 -0400)]
polkitd: add reference to polkit(8) from its man page

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoClarify docs a bit
David Zeuthen [Tue, 22 May 2012 18:00:36 +0000 (14:00 -0400)]
Clarify docs a bit

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agodocs: update SEE ALSO to make each man page point to all other man pages
David Zeuthen [Tue, 22 May 2012 17:51:18 +0000 (13:51 -0400)]
docs: update SEE ALSO to make each man page point to all other man pages

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agodocs: enclose local <citerefentry> in <link> to make links work
David Zeuthen [Tue, 22 May 2012 17:47:32 +0000 (13:47 -0400)]
docs: enclose local <citerefentry> in <link> to make links work

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoUpdate docs
David Zeuthen [Tue, 22 May 2012 17:38:51 +0000 (13:38 -0400)]
Update docs

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoCreate rules.d directories
David Zeuthen [Tue, 22 May 2012 13:57:20 +0000 (09:57 -0400)]
Create rules.d directories

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd test-cases and 10 second timeout for polkit.spawn()
David Zeuthen [Mon, 21 May 2012 18:38:49 +0000 (14:38 -0400)]
Add test-cases and 10 second timeout for polkit.spawn()

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoMention unix-netgroup:xyz as a valid return value in addAdminRule() functions
David Zeuthen [Mon, 21 May 2012 17:56:11 +0000 (13:56 -0400)]
Mention unix-netgroup:xyz as a valid return value in addAdminRule() functions

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoMinor doc fixes
David Zeuthen [Mon, 21 May 2012 17:54:35 +0000 (13:54 -0400)]
Minor doc fixes

Nuke the has_prefix() helper, it's just confusing.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd netgroup support
David Zeuthen [Mon, 21 May 2012 17:42:43 +0000 (13:42 -0400)]
Add netgroup support

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoTest that subject.isInGroup() works
David Zeuthen [Mon, 21 May 2012 16:29:01 +0000 (12:29 -0400)]
Test that subject.isInGroup() works

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd test cases for evaluation order
David Zeuthen [Mon, 21 May 2012 16:15:10 +0000 (12:15 -0400)]
Add test cases for evaluation order

In fact, this test uncovered that we were evaluating the rules in the
wrong order. Fix this.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agodocs: emphasize that registered functions may actually never be called
David Zeuthen [Mon, 21 May 2012 15:30:24 +0000 (11:30 -0400)]
docs: emphasize that registered functions may actually never be called

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoUse addRule() and addAdminRule()
David Zeuthen [Mon, 21 May 2012 15:03:50 +0000 (11:03 -0400)]
Use addRule() and addAdminRule()

... as the man page already says.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAlso load rules from /usr/share/polkit/rules.d
David Zeuthen [Mon, 21 May 2012 14:45:08 +0000 (10:45 -0400)]
Also load rules from /usr/share/polkit/rules.d

... in addition to /etc/polkit/rules.d.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agodocs: clarify how rules files work
David Zeuthen [Mon, 21 May 2012 14:17:19 +0000 (10:17 -0400)]
docs: clarify how rules files work

After feedback from Matthias Clasen <mclasen@redhat.com>.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAlso add an example of polkit.spawn() to polkit(8) man page
David Zeuthen [Sun, 20 May 2012 19:04:03 +0000 (15:04 -0400)]
Also add an example of polkit.spawn() to polkit(8) man page

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agodocs: add AUTHORIZATION RULES section to the polkit(8) man page
David Zeuthen [Sun, 20 May 2012 18:55:56 +0000 (14:55 -0400)]
docs: add AUTHORIZATION RULES section to the polkit(8) man page

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoDon't include command-line in spawning error messages
David Zeuthen [Sat, 19 May 2012 00:27:56 +0000 (20:27 -0400)]
Don't include command-line in spawning error messages

We don't even know it and it's not worth reconstructing it.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoMake polkit.spawn() take an array of arguments instead of a command-line
David Zeuthen [Sat, 19 May 2012 00:18:01 +0000 (20:18 -0400)]
Make polkit.spawn() take an array of arguments instead of a command-line

Much safer and easier this way.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd polkit.spawn() to spawn external programs
David Zeuthen [Fri, 18 May 2012 23:57:50 +0000 (19:57 -0400)]
Add polkit.spawn() to spawn external programs

... and also add polkit.quote() for quoting arguments when
constructing the command-line.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoMake it possible for JS code to change details
David Zeuthen [Fri, 18 May 2012 21:23:18 +0000 (17:23 -0400)]
Make it possible for JS code to change details

For example, to set the authentication message, a JS function can
simply do

 details["polkit.message"] = "Hey dude, XYZ, I need your password";

This can also be used to pass data back to the mechanism.

To make this work properly, we also introduce a slight change: the
a{ss} passed back to the mechanism (part of the AuthorizationResult
structure) will be initialized with the a{ss} the app passed itself in
the CheckAuthorization() call.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoReformat init.js and also avoid quoting non-string properties in toString()
David Zeuthen [Fri, 18 May 2012 20:04:12 +0000 (16:04 -0400)]
Reformat init.js and also avoid quoting non-string properties in toString()

Otherwise it's hard to tell whether 'true' is a string or a boolean...

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoEmit ::Changed signal after reloading rules
David Zeuthen [Fri, 18 May 2012 19:35:51 +0000 (15:35 -0400)]
Emit ::Changed signal after reloading rules

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoCollect garbage
David Zeuthen [Fri, 18 May 2012 19:34:50 +0000 (15:34 -0400)]
Collect garbage

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd a couple of more error checks
David Zeuthen [Fri, 18 May 2012 19:30:48 +0000 (15:30 -0400)]
Add a couple of more error checks

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoClean up code a bit
David Zeuthen [Fri, 18 May 2012 19:24:30 +0000 (15:24 -0400)]
Clean up code a bit

Also, move init code into init.js instead of using a C string for
it...

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoPass details to JS functions and simplify how Subject instances are constructed
David Zeuthen [Fri, 18 May 2012 16:01:44 +0000 (12:01 -0400)]
Pass details to JS functions and simplify how Subject instances are constructed

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoInclude seat and session in Subject object
David Zeuthen [Fri, 18 May 2012 04:09:02 +0000 (00:09 -0400)]
Include seat and session in Subject object

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd experimental authority backend using JavaScript rule files
David Zeuthen [Fri, 18 May 2012 03:27:58 +0000 (23:27 -0400)]
Add experimental authority backend using JavaScript rule files

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoPost-release version bump to 0.106
David Zeuthen [Tue, 24 Apr 2012 16:48:27 +0000 (12:48 -0400)]
Post-release version bump to 0.106

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoUpdate NEWS for release 0.105
David Zeuthen [Tue, 24 Apr 2012 16:46:24 +0000 (12:46 -0400)]
Update NEWS for release

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd Makefile rules for signing and publishing releases and docs
David Zeuthen [Tue, 24 Apr 2012 16:39:27 +0000 (12:39 -0400)]
Add Makefile rules for signing and publishing releases and docs

Also mention in README how the authenticity of releases can be
verified.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoUpdate the docs to use 'polkit' (instead of 'PolicyKit') as the name
David Zeuthen [Tue, 24 Apr 2012 16:25:11 +0000 (12:25 -0400)]
Update the docs to use 'polkit' (instead of 'PolicyKit') as the name

... as much as possible.

Also remove the license on the docs and the FSF's address.

Also point to http://www.freedesktop.org/software/polkit/docs/latest/
as that is going to be where docs are stored, going forward.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoMention pkttyagent(1) in "Writing PolicyKit applications" chapter
David Zeuthen [Tue, 24 Apr 2012 16:11:13 +0000 (12:11 -0400)]
Mention pkttyagent(1) in "Writing PolicyKit applications" chapter

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoFix type in docs
David Zeuthen [Thu, 12 Apr 2012 18:45:07 +0000 (14:45 -0400)]
Fix type in docs

It's RegisterAuthenticationAgentWithOptions, not just
RegisterAuthenticationAgent.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoMake it possible to influence agent registration with an a{sv} parameter
David Zeuthen [Thu, 12 Apr 2012 17:54:27 +0000 (13:54 -0400)]
Make it possible to influence agent registration with an a{sv} parameter

Additionally, add a "fallback" option. Also add support in this in the
pkttyagent(1) program.

This slightly breaks libpolkit-backend API by adding a GVariant* param
to one of the class vfuncs... but that API is already declared
unstable so that's fine.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd pkttyagent(1) helper
David Zeuthen [Wed, 11 Apr 2012 17:15:48 +0000 (13:15 -0400)]
Add pkttyagent(1) helper

This came up while working on

 https://bugzilla.redhat.com/show_bug.cgi?id=804088

and is useful for example if it's not suitable or appropriate to link
against the polkit libraries.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoPolkitAgentSession: Don't leak file descriptors
David Zeuthen [Thu, 8 Mar 2012 20:36:30 +0000 (15:36 -0500)]
PolkitAgentSession: Don't leak file descriptors

This was reported here

 https://bugzilla.gnome.org/show_bug.cgi?id=671486

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoPolkitUnixSession: Actually return TRUE if a session exists
David Zeuthen [Mon, 6 Feb 2012 16:26:06 +0000 (11:26 -0500)]
PolkitUnixSession: Actually return TRUE if a session exists

Also, don't treat the integer returned by sd_session_get_uid() as a
boolean because that's just confusing.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoPolkitUnixSession: Set error if we cannot find a session for the given pid
David Zeuthen [Mon, 6 Feb 2012 16:24:53 +0000 (11:24 -0500)]
PolkitUnixSession: Set error if we cannot find a session for the given pid

Also, don't treat the integer returned by sd_pid_get_session() as a
boolean because that's just confusing. Also, don't confuse memory
supposed to be freed by g_free() and free(3) with each other. See

 https://bugzilla.redhat.com/show_bug.cgi?id=787222

for more details.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoVarious builddir != srcdir fixes
Ryan Lortie [Sat, 7 Jan 2012 06:40:01 +0000 (01:40 -0500)]
Various builddir != srcdir fixes

Fix autogen.sh to work when run from the builddir.

Also: switch over to using the gobject-introspection Makefile (which is
out-of-tree safe) instead of hardcoding our own version.

https://bugs.freedesktop.org/show_bug.cgi?id=44599

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoPost-release version bump
David Zeuthen [Tue, 3 Jan 2012 17:04:27 +0000 (12:04 -0500)]
Post-release version bump

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoUpdate NEWS for release 0.104
David Zeuthen [Tue, 3 Jan 2012 16:58:51 +0000 (11:58 -0500)]
Update NEWS for release

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoDetect whether systemd is available and default to use if so
David Zeuthen [Tue, 3 Jan 2012 16:29:37 +0000 (11:29 -0500)]
Detect whether systemd is available and default to use if so

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd optional systemd support
Matthias Clasen [Tue, 20 Dec 2011 03:37:05 +0000 (22:37 -0500)]
Add optional systemd support

When configured with --enable-systemd, this patch makes
polkit use systemd for session tracking instead of ConsoleKit.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoBug 43610 - Add netgroup support
Nikki VonHollen [Tue, 20 Dec 2011 23:11:23 +0000 (15:11 -0800)]
Bug 43610 - Add netgroup support

https://bugs.freedesktop.org/show_bug.cgi?id=43610

Added netgroup support and additional unit tests with MockLibc support.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoBug 43608 – Add unit tests
Nikki VonHollen [Tue, 20 Dec 2011 16:10:17 +0000 (11:10 -0500)]
Bug 43608 – Add unit tests

https://bugs.freedesktop.org/show_bug.cgi?id=43608

Basic unittest support and a few tests. Adds basic unit tests for:

PolkitIdentity, PolkitUnixUser, PolkitUnixGroup,
PolkitBackendLocalAuthorizationStore, and PolkitBackendLocalAuthority.

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoPost-release version bump to 0.104
David Zeuthen [Tue, 6 Dec 2011 15:50:06 +0000 (10:50 -0500)]
Post-release version bump to 0.104

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoFix typo 0.103
David Zeuthen [Tue, 6 Dec 2011 15:47:29 +0000 (10:47 -0500)]
Fix typo

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoUpdate NEWS for release
David Zeuthen [Tue, 6 Dec 2011 15:36:54 +0000 (10:36 -0500)]
Update NEWS for release

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoDefault to AdminIdentities=unix-group:wheel for local authority
David Zeuthen [Tue, 6 Dec 2011 15:25:43 +0000 (10:25 -0500)]
Default to AdminIdentities=unix-group:wheel for local authority

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoMistype in DBus object: PoliycKit1 -> PolicyKit1
Alan Near [Mon, 7 Nov 2011 07:38:22 +0000 (11:38 +0400)]
Mistype in DBus object: PoliycKit1 -> PolicyKit1

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoBug 41025 – Add org.freedesktop.policykit.owner annotation
David Zeuthen [Tue, 18 Oct 2011 19:45:40 +0000 (15:45 -0400)]
Bug 41025 – Add org.freedesktop.policykit.owner annotation

This allows daemons running as a designated uid to check
authorizations. Based on a patch from Christopher James Halse Rogers
<chalserogers@gmail.com>.

https://bugs.freedesktop.org/show_bug.cgi?id=41025

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd --no-debug option and use this for D-Bus activation
David Zeuthen [Tue, 18 Oct 2011 17:13:16 +0000 (13:13 -0400)]
Add --no-debug option and use this for D-Bus activation

Signed-off-by: David Zeuthen <davidz@redhat.com>
12 years agoAdd support for the org.freedesktop.policykit.imply annotation
David Zeuthen [Tue, 20 Sep 2011 18:13:12 +0000 (14:13 -0400)]
Add support for the org.freedesktop.policykit.imply annotation

For example, GNOME control center can now defined e.g.

  <action id="org.zee.example.meta">
    <description>Meta Action</description>
    <message>Example of a meta action, blabla</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.imply">org.freedesktop.udisks2.ata-smart-selftest org.freedesktop.udisks2.encrypted-lock-others org.freedesktop.udisks2.filesystem-unmount-others</annotate>
  </action>

and set up a single GtkLockButton for a PolkitPermission for action id
"org.zee.example.meta".

When unlocked the given subject will now be authorized for the actions
mentioned in the annotation.

Example test program:

int
main (int argc, char *argv[])
{
  PolkitSubject *subject;
  GtkWidget *window;
  GtkWidget *table;
  GMainLoop *loop;
  guint n;

  gtk_init (&argc, &argv);

  subject = polkit_unix_process_new (getpid ());

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  table = gtk_table_new (1, 2, FALSE);
  for (n = 1; n < argc; n++)
    {
      const gchar *action_id = argv[n];
      GPermission *permission;
      GtkWidget *label;
      GtkWidget *lock_button;
      GError *error = NULL;

      label = gtk_label_new (action_id);

      permission = polkit_permission_new_sync (action_id, subject, NULL, &error);
      if (permission == NULL)
        {
          g_error ("Error constructing permission for action_id %s: %s (%s, %d)",
                   action_id, error->message, g_quark_to_string (error->domain), error->code);
          goto out;
        }
      lock_button = gtk_lock_button_new (permission);
      g_object_unref (permission);

      gtk_table_attach (GTK_TABLE (table), label,       0, 1, n - 1, n, GTK_FILL, GTK_FILL, 0, 0);
      gtk_table_attach (GTK_TABLE (table), lock_button, 1, 2, n - 1, n, GTK_FILL, GTK_FILL, 0, 0);
    }
  gtk_container_add (GTK_CONTAINER (window), table);

  gtk_widget_show_all (window);

  loop = g_main_loop_new (NULL, FALSE);
  g_main_loop_run (loop);

 out:
  ;
}

Compile with:

 gcc -o showpolkit showpolkit.c `pkg-config --cflags --libs polkit-gobject-1 gtk+-3.0` -g -O0

Run with:

 ./showpolkit org.freedesktop.udisks2.ata-smart-selftest org.freedesktop.udisks2.encrypted-lock-others org.freedesktop.udisks2.filesystem-unmount-others org.zee.example.meta

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoPost-release version bump to 0.103
David Zeuthen [Mon, 1 Aug 2011 14:17:23 +0000 (10:17 -0400)]
Post-release version bump to 0.103

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoUpdate NEWS for release 0.102
David Zeuthen [Mon, 1 Aug 2011 14:11:03 +0000 (10:11 -0400)]
Update NEWS for release

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoFix multi-line pam prompt handling
Marc Deslauriers [Tue, 28 Jun 2011 11:32:24 +0000 (12:32 +0100)]
Fix multi-line pam prompt handling

Some pam modules may attempt to display multi-line prompts to the
user. In these cases, PolicyKit was failing. This patch fixes the
issue by escaping the prompt before passing it and unescaping it
again.

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoSpecify exported pkg-config files in GIRs
Evan Nemerson [Sun, 17 Jul 2011 23:01:18 +0000 (16:01 -0700)]
Specify exported pkg-config files in GIRs

https://bugs.freedesktop.org/show_bug.cgi?id=39315

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoBug 38769 — pkexec: Support running X11 apps
Martin Pitt [Wed, 29 Jun 2011 21:43:48 +0000 (22:43 +0100)]
Bug 38769 — pkexec: Support running X11 apps

Introduce a new annotation flag "org.freedesktop.policykit.exec.allow_gui"
which will cause pkexec to preserve $DISPLAY and $XAUTHORITY. With this, the
remaining few legacy X11 programs which still need to run as root can finally
be migrated away from gksu (or similar) to pkexec, with the help of some
.polkit files. This will provide a consistent UI and also help with making the
authentication dialogs less spoofable.

Relax validate_environment_variable() to allow '/' in $XAUTHORITY, as this
variable actually is a full path.

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoFix backend crash if a .policy file does not specify <message>
Martin Pitt [Wed, 29 Jun 2011 20:53:33 +0000 (21:53 +0100)]
Fix backend crash if a .policy file does not specify <message>

get_localized_data_for_challenge() would call expand_properties() with a NULL
"message" argument, causing a segfault.

13 years agoIgnore .po/ for intltool
Martin Pitt [Wed, 20 Apr 2011 10:00:00 +0000 (12:00 +0200)]
Ignore .po/ for intltool

This avoids build failures if quilt patches change files with translatable
strings.

https://bugs.freedesktop.org/show_bug.cgi?id=36415

13 years agopkexec: Avoid TOCTTOU problems with parent process
David Zeuthen [Fri, 1 Apr 2011 16:13:15 +0000 (12:13 -0400)]
pkexec: Avoid TOCTTOU problems with parent process

In a nutshell, the parent process may change its uid (either real- or
effective uid) after launching pkexec. It can do this by exec()'ing
e.g. a setuid root program.

To avoid this problem, just use the uid the parent process had when it
executed pkexec. This happens to be the same uid of the pkexec process
itself.

Additionally, remove some dubious code that allowed pkexec to continue
when the parent process died as there is no reason to support
something like that. Also ensure that the pkexec process is killed if
the parent process dies.

This problem was pointed out by Neel Mehta <nmehta@google.com>.

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoUse polkit_unix_process_get_uid() to get the owner of a process
David Zeuthen [Fri, 1 Apr 2011 16:12:27 +0000 (12:12 -0400)]
Use polkit_unix_process_get_uid() to get the owner of a process

This avoids a TOCTTOU problem.

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoMake PolkitUnixProcess also record the uid of the process
David Zeuthen [Fri, 1 Apr 2011 16:09:45 +0000 (12:09 -0400)]
Make PolkitUnixProcess also record the uid of the process

This is needed to avoid possible TOCTTOU issues since a process can
change both its real uid and effective uid.

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoPolkitUnixProcess: Clarify that the real uid is returned, not the effective one
David Zeuthen [Thu, 31 Mar 2011 16:59:09 +0000 (12:59 -0400)]
PolkitUnixProcess: Clarify that the real uid is returned, not the effective one

On Linux, also switch to parsing /proc/<pid>/status instead of relying
on the st_uid returned by stat(2) to be the uid we want.

This was pointed out by Neel Mehta <nmehta@google.com>. Thanks!

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoDon't show diagnostic messages intended for the administrator to the end user
David Zeuthen [Mon, 14 Mar 2011 17:34:45 +0000 (14:34 -0300)]
Don't show diagnostic messages intended for the administrator to the end user

See https://bugzilla.gnome.org/show_bug.cgi?id=644737#c6 for discussion.

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agointrospection: Add --c-include to the gir files
Benjamin Otte [Fri, 11 Mar 2011 13:01:27 +0000 (08:01 -0500)]
introspection: Add --c-include to the gir files

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoPost-release version bump to 0.102
David Zeuthen [Thu, 3 Mar 2011 20:14:36 +0000 (15:14 -0500)]
Post-release version bump to 0.102

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoUpdate NEWS for release 0.101
David Zeuthen [Thu, 3 Mar 2011 18:37:00 +0000 (13:37 -0500)]
Update NEWS for release

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoBuild examples by default and fix compiler warnings
David Zeuthen [Thu, 3 Mar 2011 18:31:52 +0000 (13:31 -0500)]
Build examples by default and fix compiler warnings

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoFix a couple of warnings triggered by gcc 4.6
David Zeuthen [Thu, 3 Mar 2011 18:22:53 +0000 (13:22 -0500)]
Fix a couple of warnings triggered by gcc 4.6

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoDeprecated PolkitBackendActionLookup
David Zeuthen [Thu, 3 Mar 2011 18:13:11 +0000 (13:13 -0500)]
Deprecated PolkitBackendActionLookup

Instead, pass the untranslated message as polkit.message and set the
gettext domain on polkit.gettext_domain. For printf()-style messages,
occurences of the form $(name_of_key) in the translated version of
polkit.message are expanded with the value of the property
name_of_key. See the pkexec(1) mechanism for an example of how to use
this.

Additionally, the property polkit.icon_name can be set to the
icon. Note that not all authentication agents use this - in
particular, gnome-shell does not.

It is no longer possible to set the details to be shown in the
authentication dialog. It was never a good idea to hide information
there anyway. Instead, the mechanism should format a meaningful
message.

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoAllow overriding message shown in authentication dialog
David Zeuthen [Wed, 23 Feb 2011 21:45:59 +0000 (16:45 -0500)]
Allow overriding message shown in authentication dialog

This is much easier than writing a PolkitBackendActionLookup class and
installing an extension. On the downside it requires the caller to be
uid 0.

Example: http://people.freedesktop.org/~david/polkit-pass-messages.png

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoBug 29712 – Use monotonic for temporary authorizations
David Zeuthen [Wed, 23 Feb 2011 20:47:20 +0000 (15:47 -0500)]
Bug 29712 – Use monotonic for temporary authorizations

https://bugs.freedesktop.org/show_bug.cgi?id=29712

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoBe a bit more careful parsing the command-line
David Zeuthen [Wed, 23 Feb 2011 20:11:07 +0000 (15:11 -0500)]
Be a bit more careful parsing the command-line

In particular, avoid crashing for Zombies

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agopkcheck: Make it possible to list and revoke temporary authorizations
David Zeuthen [Wed, 23 Feb 2011 19:47:11 +0000 (14:47 -0500)]
pkcheck: Make it possible to list and revoke temporary authorizations

Signed-off-by: David Zeuthen <davidz@redhat.com>
13 years agoMake pkcheck(1) report if the authentication dialog was dismissed
David Zeuthen [Wed, 23 Feb 2011 17:36:22 +0000 (12:36 -0500)]
Make pkcheck(1) report if the authentication dialog was dismissed

Signed-off-by: David Zeuthen <davidz@redhat.com>