summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
authorMatthew Leeds <mwl458@gmail.com>2020-02-07 19:30:21 +0000
committerRay Strode <halfline@gmail.com>2020-02-07 19:30:21 +0000
commitd5847d8d012d4a2a659f890c210ad10031a9cf3d (patch)
tree00370bcdfeacf302c56c78c159806d91d0e44117 /.gitlab-ci.yml
parenteb1cac46823520eeadaf22e5be1fe3d3632e6e7e (diff)
Check GDBusMessage for INTERACTIVE_AUTHORIZATION flag
Currently we always use the flag POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION when checking if a subject is authorized for an action, meaning that we cause polkit to create an interactive dialog box. However since GLib 2.46, there has been a flag G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION which indicates if the caller is prepared to have the user authenticate (e.g. it's a user-facing program not a daemon). So, check for this flag in daemon_local_check_auth(). The impetus for this patch is that in the Endles fork of gnome-control-center we use the library malcontent, and call mct_manager_get_app_filter() even when we don't have permission to actually read the user's app filter, since it shouldn't cause a dialog without MCT_GET_APP_FILTER_FLAGS_INTERACTIVE being passed to it. However because accountsservice doesn't respect G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, polkit attempts to create an auth dialog anyway (and hits an error but that's a separate gnome-shell bug). In libaccountsservice, we use code generated by gdbus-codegen to call D-Bus methods implemented by the daemon, and that generated code unconditionally uses G_DBUS_CALL_FLAGS_NONE, which would mean that users of libaccountsservice can't use interactive auth. The solution is to bump our GLib requirement to 2.63.5 (2.64 hasn't been released yet) and pass --glib-min-required 2.64 to gdbus-codegen, which causes the generated code to have two more arguments for each method call: one for GDBusCallFlags and one for a timeout value. For now we always use G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION in libaccountsservice, to maintain compatibility. It might make sense to add API in the future so that users of the library can specify if they want to allow interactive auth. This commit also makes us use G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION for method calls implemented by ConsoleKit, even though presumably no problems are caused by the current behavior of using G_DBUS_CALL_FLAGS_NONE. In theory ConsoleKit could check for G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION one day (although in practice I think it's deprecated and inactive), and I think the whole of libaccountsservice should assume interactive auth is allowed until we have API to distinguish the no-interactive-auth case.
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml2
1 files changed, 1 insertions, 1 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 45abc9e..3d8d99e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,5 +1,5 @@
build-fedora:
- image: fedora:latest
+ image: fedora:rawhide
before_script:
- dnf install -y gcc meson ninja-build gobject-introspection-devel glib-devel gtk-doc gettext-devel make polkit-devel redhat-rpm-config systemd-devel dbus-devel vala
script: