diff options
Diffstat (limited to 'extra/polkit')
-rw-r--r-- | extra/polkit/PKGBUILD | 18 | ||||
-rw-r--r-- | extra/polkit/fix-xauthority.patch | 58 |
2 files changed, 67 insertions, 9 deletions
diff --git a/extra/polkit/PKGBUILD b/extra/polkit/PKGBUILD index 40300622d..4c5a22e39 100644 --- a/extra/polkit/PKGBUILD +++ b/extra/polkit/PKGBUILD @@ -1,29 +1,29 @@ -# $Id: PKGBUILD 169989 2012-10-30 23:00:46Z heftig $ +# $Id: PKGBUILD 174766 2013-01-07 11:39:56Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=polkit -pkgver=0.107 -pkgrel=4 +pkgver=0.109 +pkgrel=1 pkgdesc="Application development toolkit for controlling system-wide privileges" arch=(i686 x86_64) license=('LGPL') -url="http://www.freedesktop.org/wiki/Software/PolicyKit" +url="http://www.freedesktop.org/wiki/Software/polkit" depends=('glib2' 'pam' 'expat' 'libsystemd' 'js') makedepends=('intltool' 'gtk-doc' 'gobject-introspection') replaces=('policykit') options=('!libtool') install=polkit.install source=(http://www.freedesktop.org/software/polkit/releases/$pkgname-$pkgver.tar.gz - polkit.pam fix-empty-wheel.patch) -md5sums=('0e4f9c53f43fd1b25ac3f0d2e09b2ae1' + polkit.pam + fix-xauthority.patch) +md5sums=('8c3f08287dd3e1e546e3c2ae00090908' '6564f95878297b954f0572bc1610dd15' - 'c99ab2a7919ad0b69fde4804c043b07f') + '78db344a30d7aa089b4705009ec95b58') build() { cd $pkgname-$pkgver - # https://bugs.archlinux.org/task/31717 - patch -Np1 -i ../fix-empty-wheel.patch + patch -Np1 -i ../fix-xauthority.patch ./configure --prefix=/usr --sysconfdir=/etc \ --localstatedir=/var --libexecdir=/usr/lib/polkit-1 \ diff --git a/extra/polkit/fix-xauthority.patch b/extra/polkit/fix-xauthority.patch new file mode 100644 index 000000000..cf00b929c --- /dev/null +++ b/extra/polkit/fix-xauthority.patch @@ -0,0 +1,58 @@ +From d6acecdd0ebb42e28ff28e04e0207cb01fa20910 Mon Sep 17 00:00:00 2001 +From: David Zeuthen <zeuthen@gmail.com> +Date: Wed, 19 Dec 2012 19:28:29 +0000 +Subject: Set XAUTHORITY environment variable if is unset + +The way it works is that if XAUTHORITY is unset, then its default +value is $HOME/.Xauthority. But since we're changing user identity +this will not work since $HOME will now change. Therefore, if +XAUTHORITY is unset, just set its default value before changing +identity. This bug only affected login managers using X Window +Authorization but not explicitly setting the XAUTHORITY variable. + +You can argue that XAUTHORITY is broken since it forces uid-changing +apps like pkexec(1) to do more work - and get involved in intimate +details of how X works and so on - but that doesn't change how things +work. + +Based on a patch from Peter Wu <lekensteyn@gmail.com>. + +https://bugs.freedesktop.org/show_bug.cgi?id=51623 + +Signed-off-by: David Zeuthen <zeuthen@gmail.com> +--- +diff --git a/src/programs/pkexec.c b/src/programs/pkexec.c +index 840eb3c..da9784a 100644 +--- a/src/programs/pkexec.c ++++ b/src/programs/pkexec.c +@@ -608,6 +608,28 @@ main (int argc, char *argv[]) + g_ptr_array_add (saved_env, g_strdup (value)); + } + ++ /* $XAUTHORITY is "special" - if unset, we need to set it to ~/.Xauthority. Yes, ++ * this is broken but it's unfortunately how things work (see fdo #51623 for ++ * details) ++ */ ++ if (g_getenv ("XAUTHORITY") == NULL) ++ { ++ const gchar *home; ++ ++ /* pre-2.36 GLib does not examine $HOME (it always looks in /etc/passwd) and ++ * this is not what we want ++ */ ++ home = g_getenv ("HOME"); ++ if (home == NULL) ++ home = g_get_home_dir (); ++ ++ if (home != NULL) ++ { ++ g_ptr_array_add (saved_env, g_strdup ("XAUTHORITY")); ++ g_ptr_array_add (saved_env, g_build_filename (home, ".Xauthority", NULL)); ++ } ++ } ++ + /* Nuke the environment to get a well-known and sanitized environment to avoid attacks + * via e.g. the DBUS_SYSTEM_BUS_ADDRESS environment variable and similar. + */ +-- +cgit v0.9.0.2-2-gbebe |