diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2020-10-04 17:58:22 +0200 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2020-10-04 17:58:22 +0200 |
commit | 1bed18530dc535caec4a9fbfe2f9c4de9ac3d730 (patch) | |
tree | 2aed9912f8b68616718269ddb4e307bcdb166cea /sys-auth | |
parent | sys-apps/dbus: Cleanup vulnerable 1.12.16 (diff) | |
download | gentoo-1bed18530dc535caec4a9fbfe2f9c4de9ac3d730.tar.gz gentoo-1bed18530dc535caec4a9fbfe2f9c4de9ac3d730.tar.bz2 gentoo-1bed18530dc535caec4a9fbfe2f9c4de9ac3d730.zip |
sys-auth/polkit: Cleanup vulnerable 0.115-r4
Bug: https://bugs.gentoo.org/717712
Package-Manager: Portage-3.0.8, Repoman-3.0.1
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'sys-auth')
-rw-r--r-- | sys-auth/polkit/Manifest | 1 | ||||
-rw-r--r-- | sys-auth/polkit/files/CVE-2018-19788.patch | 339 | ||||
-rw-r--r-- | sys-auth/polkit/files/polkit-0.115-spidermonkey-60.patch | 180 | ||||
-rw-r--r-- | sys-auth/polkit/polkit-0.115-r4.ebuild | 144 |
4 files changed, 0 insertions, 664 deletions
diff --git a/sys-auth/polkit/Manifest b/sys-auth/polkit/Manifest index 22da4a92e245..c1e90f0d5ca8 100644 --- a/sys-auth/polkit/Manifest +++ b/sys-auth/polkit/Manifest @@ -1,4 +1,3 @@ -DIST polkit-0.115.tar.gz 1550932 BLAKE2B 3185ebed46209f88a9ffccbbcaf1bf180d1ae6d5ec53cf3c66d867ad43910b47a1123a3db190991ebb382a0d28fc5a119ea4bab942db324e9af5663056cf6ee1 SHA512 1153011fa93145b2c184e6b3446d3ca21b38918641aeccd8fac3985ac3e30ec6bc75be6973985fde90f2a24236592f1595be259155061c2d33358dd17c4ee4fc DIST polkit-0.116.tar.gz 1548311 BLAKE2B e9761a2934136d453a47b81dd1f132f9fc96c45b731d5fceb2aa7706f5325b6499f6acbb68032befc1b21878b1b54754685607c916ca8e02a8accca3ca014b31 SHA512 b66b01cc2bb4349de70147f41f161f0f6f41e7230b581dfb054058b48969ec57041ab05b51787c749ccfc36aa5f317952d7e7ba337b4f6f6c0a923ed5866c2d5 DIST polkit-0.117.tar.gz 1554536 BLAKE2B 1cf7e0ff9db19a29be626f4bea96c9e2ef8b1eab4b8287a5f1f4d2a818b86d58c1c4c4a41849d95e31559dba1b18853a31e934ebbadd8e07f94dfd58b45240e0 SHA512 c10ea984f2386fe436e58a2866e5323afc80d24f744f0ee61d966941259aa491bd96b07d911434aa731b300c3cca25b647804b396501175ab5b3c53384e94c70 DIST polkit-0.118.tar.gz 1556765 BLAKE2B d048b37b1ff8ad59a2d8a333a3b459d1592b61f7a6d9a9569f8b2984de913d71abfc9748e242c7453f0bce4f322bd44672e35309f181afd22488794ca0e47119 SHA512 3d412f40c903cfaf68530f9c0cb616106f8edf43bec6805de129f8bb9cb4e64c98da6bf02caa3ef5619974f3e2df7a70564f08b92901662453477e9005752b4e diff --git a/sys-auth/polkit/files/CVE-2018-19788.patch b/sys-auth/polkit/files/CVE-2018-19788.patch deleted file mode 100644 index 97e3608a12ba..000000000000 --- a/sys-auth/polkit/files/CVE-2018-19788.patch +++ /dev/null @@ -1,339 +0,0 @@ -From 2cb40c4d5feeaa09325522bd7d97910f1b59e379 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> -Date: Mon, 3 Dec 2018 10:28:58 +0100 -Subject: [PATCH 1/2] Allow negative uids/gids in PolkitUnixUser and Group - objects - -(uid_t) -1 is still used as placeholder to mean "unset". This is OK, since -there should be no users with such number, see -https://systemd.io/UIDS-GIDS#special-linux-uids. - -(uid_t) -1 is used as the default value in class initialization. - -When a user or group above INT32_MAX is created, the numeric uid or -gid wraps around to negative when the value is assigned to gint, and -polkit gets confused. Let's accept such gids, except for -1. - -A nicer fix would be to change the underlying type to e.g. uint32 to -not have negative values. But this cannot be done without breaking the -API, so likely new functions will have to be added (a -polkit_unix_user_new variant that takes a unsigned, and the same for -_group_new, _set_uid, _get_uid, _set_gid, _get_gid, etc.). This will -require a bigger patch. - -Fixes https://gitlab.freedesktop.org/polkit/polkit/issues/74. ---- - src/polkit/polkitunixgroup.c | 15 +++++++++++---- - src/polkit/polkitunixprocess.c | 12 ++++++++---- - src/polkit/polkitunixuser.c | 13 ++++++++++--- - 3 files changed, 29 insertions(+), 11 deletions(-) - -diff --git a/src/polkit/polkitunixgroup.c b/src/polkit/polkitunixgroup.c -index c57a1aa..309f689 100644 ---- a/src/polkit/polkitunixgroup.c -+++ b/src/polkit/polkitunixgroup.c -@@ -71,6 +71,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixGroup, polkit_unix_group, G_TYPE_OBJECT, - static void - polkit_unix_group_init (PolkitUnixGroup *unix_group) - { -+ unix_group->gid = -1; /* (git_t) -1 is not a valid GID under Linux */ - } - - static void -@@ -100,11 +101,14 @@ polkit_unix_group_set_property (GObject *object, - GParamSpec *pspec) - { - PolkitUnixGroup *unix_group = POLKIT_UNIX_GROUP (object); -+ gint val; - - switch (prop_id) - { - case PROP_GID: -- unix_group->gid = g_value_get_int (value); -+ val = g_value_get_int (value); -+ g_return_if_fail (val != -1); -+ unix_group->gid = val; - break; - - default: -@@ -131,9 +135,9 @@ polkit_unix_group_class_init (PolkitUnixGroupClass *klass) - g_param_spec_int ("gid", - "Group ID", - "The UNIX group ID", -- 0, -+ G_MININT, - G_MAXINT, -- 0, -+ -1, - G_PARAM_CONSTRUCT | - G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | -@@ -166,9 +170,10 @@ polkit_unix_group_get_gid (PolkitUnixGroup *group) - */ - void - polkit_unix_group_set_gid (PolkitUnixGroup *group, -- gint gid) -+ gint gid) - { - g_return_if_fail (POLKIT_IS_UNIX_GROUP (group)); -+ g_return_if_fail (gid != -1); - group->gid = gid; - } - -@@ -183,6 +188,8 @@ polkit_unix_group_set_gid (PolkitUnixGroup *group, - PolkitIdentity * - polkit_unix_group_new (gint gid) - { -+ g_return_val_if_fail (gid != -1, NULL); -+ - return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_GROUP, - "gid", gid, - NULL)); -diff --git a/src/polkit/polkitunixprocess.c b/src/polkit/polkitunixprocess.c -index 972b777..b02b258 100644 ---- a/src/polkit/polkitunixprocess.c -+++ b/src/polkit/polkitunixprocess.c -@@ -159,9 +159,14 @@ polkit_unix_process_set_property (GObject *object, - polkit_unix_process_set_pid (unix_process, g_value_get_int (value)); - break; - -- case PROP_UID: -- polkit_unix_process_set_uid (unix_process, g_value_get_int (value)); -+ case PROP_UID: { -+ gint val; -+ -+ val = g_value_get_int (value); -+ g_return_if_fail (val != -1); -+ polkit_unix_process_set_uid (unix_process, val); - break; -+ } - - case PROP_START_TIME: - polkit_unix_process_set_start_time (unix_process, g_value_get_uint64 (value)); -@@ -239,7 +244,7 @@ polkit_unix_process_class_init (PolkitUnixProcessClass *klass) - g_param_spec_int ("uid", - "User ID", - "The UNIX user ID", -- -1, -+ G_MININT, - G_MAXINT, - -1, - G_PARAM_CONSTRUCT | -@@ -303,7 +308,6 @@ polkit_unix_process_set_uid (PolkitUnixProcess *process, - gint uid) - { - g_return_if_fail (POLKIT_IS_UNIX_PROCESS (process)); -- g_return_if_fail (uid >= -1); - process->uid = uid; - } - -diff --git a/src/polkit/polkitunixuser.c b/src/polkit/polkitunixuser.c -index 8bfd3a1..234a697 100644 ---- a/src/polkit/polkitunixuser.c -+++ b/src/polkit/polkitunixuser.c -@@ -72,6 +72,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixUser, polkit_unix_user, G_TYPE_OBJECT, - static void - polkit_unix_user_init (PolkitUnixUser *unix_user) - { -+ unix_user->uid = -1; /* (uid_t) -1 is not a valid UID under Linux */ - unix_user->name = NULL; - } - -@@ -112,11 +113,14 @@ polkit_unix_user_set_property (GObject *object, - GParamSpec *pspec) - { - PolkitUnixUser *unix_user = POLKIT_UNIX_USER (object); -+ gint val; - - switch (prop_id) - { - case PROP_UID: -- unix_user->uid = g_value_get_int (value); -+ val = g_value_get_int (value); -+ g_return_if_fail (val != -1); -+ unix_user->uid = val; - break; - - default: -@@ -144,9 +148,9 @@ polkit_unix_user_class_init (PolkitUnixUserClass *klass) - g_param_spec_int ("uid", - "User ID", - "The UNIX user ID", -- 0, -+ G_MININT, - G_MAXINT, -- 0, -+ -1, - G_PARAM_CONSTRUCT | - G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | -@@ -182,6 +186,7 @@ polkit_unix_user_set_uid (PolkitUnixUser *user, - gint uid) - { - g_return_if_fail (POLKIT_IS_UNIX_USER (user)); -+ g_return_if_fail (uid != -1); - user->uid = uid; - } - -@@ -196,6 +201,8 @@ polkit_unix_user_set_uid (PolkitUnixUser *user, - PolkitIdentity * - polkit_unix_user_new (gint uid) - { -+ g_return_val_if_fail (uid != -1, NULL); -+ - return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_USER, - "uid", uid, - NULL)); --- -2.18.1 - - -From b534a10727455409acd54018a9c91000e7626126 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> -Date: Mon, 3 Dec 2018 11:20:34 +0100 -Subject: [PATCH 2/2] tests: add tests for high uids - ---- - test/data/etc/group | 1 + - test/data/etc/passwd | 2 + - .../etc/polkit-1/rules.d/10-testing.rules | 21 ++++++ - .../test-polkitbackendjsauthority.c | 72 +++++++++++++++++++ - 4 files changed, 96 insertions(+) - -diff --git a/test/data/etc/group b/test/data/etc/group -index 12ef328..b9acab9 100644 ---- a/test/data/etc/group -+++ b/test/data/etc/group -@@ -5,3 +5,4 @@ john:x:500: - jane:x:501: - sally:x:502: - henry:x:503: -+highuid2:x:4000000000: -diff --git a/test/data/etc/passwd b/test/data/etc/passwd -index 8544feb..5cf14a5 100644 ---- a/test/data/etc/passwd -+++ b/test/data/etc/passwd -@@ -3,3 +3,5 @@ john:x:500:500:John Done:/home/john:/bin/bash - jane:x:501:501:Jane Smith:/home/jane:/bin/bash - sally:x:502:502:Sally Derp:/home/sally:/bin/bash - henry:x:503:503:Henry Herp:/home/henry:/bin/bash -+highuid1:x:2147483648:2147483648:The first high uid:/home/highuid1:/sbin/nologin -+highuid2:x:4000000000:4000000000:An example high uid:/home/example:/sbin/nologin -diff --git a/test/data/etc/polkit-1/rules.d/10-testing.rules b/test/data/etc/polkit-1/rules.d/10-testing.rules -index 446e622..98bf062 100644 ---- a/test/data/etc/polkit-1/rules.d/10-testing.rules -+++ b/test/data/etc/polkit-1/rules.d/10-testing.rules -@@ -53,6 +53,27 @@ polkit.addRule(function(action, subject) { - } - }); - -+polkit.addRule(function(action, subject) { -+ if (action.id == "net.company.john_action") { -+ if (subject.user == "john") { -+ return polkit.Result.YES; -+ } else { -+ return polkit.Result.NO; -+ } -+ } -+}); -+ -+polkit.addRule(function(action, subject) { -+ if (action.id == "net.company.highuid2_action") { -+ if (subject.user == "highuid2") { -+ return polkit.Result.YES; -+ } else { -+ return polkit.Result.NO; -+ } -+ } -+}); -+ -+ - // --------------------------------------------------------------------- - // variables - -diff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c -index b484a26..71aad23 100644 ---- a/test/polkitbackend/test-polkitbackendjsauthority.c -+++ b/test/polkitbackend/test-polkitbackendjsauthority.c -@@ -330,6 +330,78 @@ static const RulesTestCase rules_test_cases[] = { - NULL, - POLKIT_IMPLICIT_AUTHORIZATION_AUTHORIZED, - }, -+ -+ { -+ /* highuid1 is not a member of group 'users', see test/data/etc/group */ -+ "group_membership_with_non_member(highuid22)", -+ "net.company.group.only_group_users", -+ "unix-user:highuid2", -+ NULL, -+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED, -+ }, -+ -+ { -+ /* highuid2 is not a member of group 'users', see test/data/etc/group */ -+ "group_membership_with_non_member(highuid21)", -+ "net.company.group.only_group_users", -+ "unix-user:highuid2", -+ NULL, -+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED, -+ }, -+ -+ { -+ /* highuid1 is not a member of group 'users', see test/data/etc/group */ -+ "group_membership_with_non_member(highuid24)", -+ "net.company.group.only_group_users", -+ "unix-user:2147483648", -+ NULL, -+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED, -+ }, -+ -+ { -+ /* highuid2 is not a member of group 'users', see test/data/etc/group */ -+ "group_membership_with_non_member(highuid23)", -+ "net.company.group.only_group_users", -+ "unix-user:4000000000", -+ NULL, -+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED, -+ }, -+ -+ { -+ /* john is authorized to do this, see 10-testing.rules */ -+ "john_action", -+ "net.company.john_action", -+ "unix-user:john", -+ NULL, -+ POLKIT_IMPLICIT_AUTHORIZATION_AUTHORIZED, -+ }, -+ -+ { -+ /* only john is authorized to do this, see 10-testing.rules */ -+ "jane_action", -+ "net.company.john_action", -+ "unix-user:jane", -+ NULL, -+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED, -+ }, -+ -+ { -+ /* highuid2 is authorized to do this, see 10-testing.rules */ -+ "highuid2_action", -+ "net.company.highuid2_action", -+ "unix-user:highuid2", -+ NULL, -+ POLKIT_IMPLICIT_AUTHORIZATION_AUTHORIZED, -+ }, -+ -+ { -+ /* only highuid2 is authorized to do this, see 10-testing.rules */ -+ "highuid1_action", -+ "net.company.highuid2_action", -+ "unix-user:highuid1", -+ NULL, -+ POLKIT_IMPLICIT_AUTHORIZATION_NOT_AUTHORIZED, -+ }, - }; - - /* ---------------------------------------------------------------------------------------------------- */ --- -2.18.1 - diff --git a/sys-auth/polkit/files/polkit-0.115-spidermonkey-60.patch b/sys-auth/polkit/files/polkit-0.115-spidermonkey-60.patch deleted file mode 100644 index 8a4510ad2051..000000000000 --- a/sys-auth/polkit/files/polkit-0.115-spidermonkey-60.patch +++ /dev/null @@ -1,180 +0,0 @@ -From c9cd7024140b837b5693d7c1bbaad1b0cd31cce6 Mon Sep 17 00:00:00 2001 -From: Emmanuele Bassi <ebassi@gnome.org> -Date: Fri, 31 Aug 2018 13:32:16 +0100 -Subject: [PATCH] Depend on mozjs-60 - -This is the new ESR version of the Mozilla JS engine, superceding -mozjs-52. ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 5c37e48..5cedb4e 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -79,7 +79,7 @@ PKG_CHECK_MODULES(GLIB, [gmodule-2.0 gio-unix-2.0 >= 2.30.0]) - AC_SUBST(GLIB_CFLAGS) - AC_SUBST(GLIB_LIBS) - --PKG_CHECK_MODULES(LIBJS, [mozjs-52]) -+PKG_CHECK_MODULES(LIBJS, [mozjs-60]) - - AC_SUBST(LIBJS_CFLAGS) - AC_SUBST(LIBJS_CXXFLAGS) - - -From dd00683e8781d230a45781d509d86ad676138564 Mon Sep 17 00:00:00 2001 -From: Emmanuele Bassi <ebassi@gnome.org> -Date: Fri, 31 Aug 2018 13:33:20 +0100 -Subject: [PATCH] Port the JS authority to mozjs-60 - -API changes in mozjs that need to be reflected in the JS authority: - - - the JS::CompileOptions constructor and the JS::CompartmentOptions - do not allow setting a JS version any more - - - do not use NULL comparisons for C++ objects - - - the resize() method for a vector has a return value that needs - to be handled - - - JSClassOps has different fields ---- - .../polkitbackendjsauthority.cpp | 65 +++++++++---------- - 1 file changed, 32 insertions(+), 33 deletions(-) - -diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp -index 7602714..984a0f0 100644 ---- a/src/polkitbackend/polkitbackendjsauthority.cpp -+++ b/src/polkitbackend/polkitbackendjsauthority.cpp -@@ -150,18 +150,17 @@ G_DEFINE_TYPE (PolkitBackendJsAuthority, polkit_backend_js_authority, POLKIT_BAC - /* ---------------------------------------------------------------------------------------------------- */ - - static const struct JSClassOps js_global_class_ops = { -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL -+ nullptr, // addProperty -+ nullptr, // deleteProperty -+ nullptr, // enumerate -+ nullptr, // newEnumerate -+ nullptr, // resolve -+ nullptr, // mayResolve -+ nullptr, // finalize -+ nullptr, // call -+ nullptr, // hasInstance -+ nullptr, // construct -+ JS_GlobalObjectTraceHook - }; - - static JSClass js_global_class = { -@@ -172,18 +171,17 @@ static JSClass js_global_class = { - - /* ---------------------------------------------------------------------------------------------------- */ - static const struct JSClassOps js_polkit_class_ops = { -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL, -- NULL -+ nullptr, // addProperty -+ nullptr, // deleteProperty -+ nullptr, // enumerate -+ nullptr, // newEnumerate -+ nullptr, // resolve -+ nullptr, // mayResolve -+ nullptr, // finalize -+ nullptr, // call -+ nullptr, // hasInstance -+ nullptr, // construct -+ nullptr // trace - }; - - static JSClass js_polkit_class = { -@@ -469,19 +467,18 @@ polkit_backend_js_authority_constructed (GObject *object) - - { - JS::CompartmentOptions compart_opts; -- compart_opts.behaviors().setVersion(JSVERSION_LATEST); -+ - JS::RootedObject global(authority->priv->cx); - - authority->priv->js_global = new JS::Heap<JSObject*> (JS_NewGlobalObject (authority->priv->cx, &js_global_class, NULL, JS::FireOnNewGlobalHook, compart_opts)); - - global = authority->priv->js_global->get (); -- -- if (global == NULL) -+ if (!global) - goto fail; - - authority->priv->ac = new JSAutoCompartment(authority->priv->cx, global); - -- if (authority->priv->ac == NULL) -+ if (!authority->priv->ac) - goto fail; - - if (!JS_InitStandardClasses (authority->priv->cx, global)) -@@ -493,7 +490,7 @@ polkit_backend_js_authority_constructed (GObject *object) - - polkit = authority->priv->js_polkit->get (); - -- if (polkit == NULL) -+ if (!polkit) - goto fail; - - if (!JS_DefineProperty(authority->priv->cx, global, "polkit", polkit, JSPROP_ENUMERATE)) -@@ -504,7 +501,7 @@ polkit_backend_js_authority_constructed (GObject *object) - js_polkit_functions)) - goto fail; - -- JS::CompileOptions options(authority->priv->cx, JSVERSION_UNKNOWN); -+ JS::CompileOptions options(authority->priv->cx); - JS::RootedValue rval(authority->priv->cx); - if (!JS::Evaluate (authority->priv->cx, - options, -@@ -684,7 +681,9 @@ set_property_strv (PolkitBackendJsAuthority *authority, - JS::AutoValueVector elems(authority->priv->cx); - guint n; - -- elems.resize(value->len); -+ if (!elems.resize(value->len)) -+ g_error ("Unable to resize vector"); -+ - for (n = 0; n < value->len; n++) - { - const char *c_string = (const char *) g_ptr_array_index(value, n); -@@ -741,7 +740,7 @@ subject_to_jsval (PolkitBackendJsAuthority *authority, - GError **error) - { - gboolean ret = FALSE; -- JS::CompileOptions options(authority->priv->cx, JSVERSION_UNKNOWN); -+ JS::CompileOptions options(authority->priv->cx); - const char *src; - JS::RootedObject obj(authority->priv->cx); - pid_t pid; -@@ -868,7 +867,7 @@ action_and_details_to_jsval (PolkitBackendJsAuthority *authority, - GError **error) - { - gboolean ret = FALSE; -- JS::CompileOptions options(authority->priv->cx, JSVERSION_UNKNOWN); -+ JS::CompileOptions options(authority->priv->cx); - const char *src; - JS::RootedObject obj(authority->priv->cx); - gchar **keys; diff --git a/sys-auth/polkit/polkit-0.115-r4.ebuild b/sys-auth/polkit/polkit-0.115-r4.ebuild deleted file mode 100644 index 675bff797101..000000000000 --- a/sys-auth/polkit/polkit-0.115-r4.ebuild +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -inherit autotools pam pax-utils systemd user xdg-utils - -DESCRIPTION="Policy framework for controlling privileges for system-wide services" -HOMEPAGE="https://www.freedesktop.org/wiki/Software/polkit https://gitlab.freedesktop.org/polkit/polkit" -SRC_URI="https://www.freedesktop.org/software/${PN}/releases/${P}.tar.gz" - -LICENSE="LGPL-2" -SLOT="0" -KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 s390 sparc x86" -IUSE="consolekit elogind examples gtk +introspection jit kde nls pam selinux systemd test" -RESTRICT="!test? ( test )" - -REQUIRED_USE="^^ ( consolekit elogind systemd )" - -BDEPEND=" - app-text/docbook-xml-dtd:4.1.2 - app-text/docbook-xsl-stylesheets - dev-libs/gobject-introspection-common - dev-libs/libxslt - dev-util/glib-utils - dev-util/gtk-doc-am - dev-util/intltool - sys-devel/gettext - virtual/pkgconfig - introspection? ( dev-libs/gobject-introspection ) -" -DEPEND=" - dev-lang/spidermonkey:60[-debug] - dev-libs/glib:2 - dev-libs/expat - elogind? ( sys-auth/elogind ) - pam? ( - sys-auth/pambase - sys-libs/pam - ) - systemd? ( sys-apps/systemd:0=[policykit] ) -" -RDEPEND="${DEPEND} - selinux? ( sec-policy/selinux-policykit ) -" -PDEPEND=" - consolekit? ( sys-auth/consolekit[policykit] ) - gtk? ( || ( - >=gnome-extra/polkit-gnome-0.105 - >=lxde-base/lxsession-0.5.2 - ) ) - kde? ( kde-plasma/polkit-kde-agent ) -" - -DOCS=( docs/TODO HACKING NEWS README ) - -PATCHES=( - # bug 660880 - "${FILESDIR}"/polkit-0.115-elogind.patch - "${FILESDIR}"/CVE-2018-19788.patch - "${FILESDIR}"/polkit-0.115-spidermonkey-60.patch -) - -QA_MULTILIB_PATHS=" - usr/lib/polkit-1/polkit-agent-helper-1 - usr/lib/polkit-1/polkitd" - -pkg_setup() { - local u=polkitd - local g=polkitd - local h=/var/lib/polkit-1 - - enewgroup ${g} - enewuser ${u} -1 -1 ${h} ${g} - esethome ${u} ${h} -} - -src_prepare() { - default - - sed -i -e 's|unix-group:wheel|unix-user:0|' src/polkitbackend/*-default.rules || die #401513 - - # Workaround upstream hack around standard gtk-doc behavior, bug #552170 - sed -i -e 's/@ENABLE_GTK_DOC_TRUE@\(TARGET_DIR\)/\1/' \ - -e '/install-data-local:/,/uninstall-local:/ s/@ENABLE_GTK_DOC_TRUE@//' \ - -e 's/@ENABLE_GTK_DOC_FALSE@install-data-local://' \ - docs/polkit/Makefile.in || die - - # disable broken test - bug #624022 - sed -i -e "/^SUBDIRS/s/polkitbackend//" test/Makefile.am || die - - # Fix cross-building, bug #590764, elogind patch, bug #598615 - eautoreconf -} - -src_configure() { - xdg_environment_reset - - local myeconfargs=( - --localstatedir="${EPREFIX}"/var - --disable-static - --enable-man-pages - --disable-gtk-doc - --disable-examples - $(use_enable elogind libelogind) - $(use_enable introspection) - $(use_enable nls) - $(usex pam "--with-pam-module-dir=$(getpam_mod_dir)" '') - --with-authfw=$(usex pam pam shadow) - $(use_enable systemd libsystemd-login) - --with-systemdsystemunitdir="$(systemd_get_systemunitdir)" - $(use_enable test) - --with-os-type=gentoo - ) - econf "${myeconfargs[@]}" -} - -src_compile() { - default - - # Required for polkitd on hardened/PaX due to spidermonkey's JIT - pax-mark mr src/polkitbackend/.libs/polkitd test/polkitbackend/.libs/polkitbackendjsauthoritytest -} - -src_install() { - default - - fowners -R polkitd:root /{etc,usr/share}/polkit-1/rules.d - - diropts -m0700 -o polkitd -g polkitd - keepdir /var/lib/polkit-1 - - if use examples; then - docinto examples - dodoc src/examples/{*.c,*.policy*} - fi - - find "${ED}" -name '*.la' -delete || die -} - -pkg_postinst() { - chown -R polkitd:root "${EROOT}"/{etc,usr/share}/polkit-1/rules.d - chown -R polkitd:polkitd "${EROOT}"/var/lib/polkit-1 -} |