commit:     77e50819c7c7c22dee5ee6b2e7538b3cfff789af
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Wed Jan 26 00:50:34 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jan 26 00:51:00 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=77e50819

sys-auth/polkit: backport CVE-2021-3560, CVE-2021-4043 patches to 0.117

Needed for non-Rust arches like sparc.

(Most users are on 0.120 and already fixed in previous commits.)

Bug: https://bugs.gentoo.org/794052
Bug: https://bugs.gentoo.org/832057
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../polkit/files/polkit-0.117-CVE-2021-3560.patch  |  29 +++++
 sys-auth/polkit/polkit-0.117-r3.ebuild             | 136 +++++++++++++++++++++
 2 files changed, 165 insertions(+)

diff --git a/sys-auth/polkit/files/polkit-0.117-CVE-2021-3560.patch 
b/sys-auth/polkit/files/polkit-0.117-CVE-2021-3560.patch
new file mode 100644
index 000000000000..9c3ce20cf574
--- /dev/null
+++ b/sys-auth/polkit/files/polkit-0.117-CVE-2021-3560.patch
@@ -0,0 +1,29 @@
+https://bugs.gentoo.org/794052
+
+From a04d13affe0fa53ff618e07aa8f57f4c0e3b9b81 Mon Sep 17 00:00:00 2001
+From: Jan Rybar <[email protected]>
+Date: Wed, 2 Jun 2021 15:43:38 +0200
+Subject: [PATCH] GHSL-2021-074: authentication bypass vulnerability in polkit
+
+initial values returned if error caught
+---
+ src/polkit/polkitsystembusname.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/polkit/polkitsystembusname.c 
b/src/polkit/polkitsystembusname.c
+index 8daa12c..8ed1363 100644
+--- a/src/polkit/polkitsystembusname.c
++++ b/src/polkit/polkitsystembusname.c
+@@ -435,6 +435,9 @@ polkit_system_bus_name_get_creds_sync (PolkitSystemBusName 
          *system_bus
+   while (!((data.retrieved_uid && data.retrieved_pid) || data.caught_error))
+     g_main_context_iteration (tmp_context, TRUE);
+ 
++  if (data.caught_error)
++    goto out;
++
+   if (out_uid)
+     *out_uid = data.uid;
+   if (out_pid)
+-- 
+GitLab
+

diff --git a/sys-auth/polkit/polkit-0.117-r3.ebuild 
b/sys-auth/polkit/polkit-0.117-r3.ebuild
new file mode 100644
index 000000000000..6dab5cf577c0
--- /dev/null
+++ b/sys-auth/polkit/polkit-0.117-r3.ebuild
@@ -0,0 +1,136 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools pam pax-utils systemd 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="elogind examples gtk +introspection kde nls pam selinux systemd test"
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="^^ ( elogind systemd )"
+
+BDEPEND="
+       acct-user/polkitd
+       app-text/docbook-xml-dtd:4.1.2
+       app-text/docbook-xsl-stylesheets
+       dev-libs/glib
+       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:68[-debug]
+       dev-libs/glib:2
+       dev-libs/expat
+       elogind? ( sys-auth/elogind )
+       pam? (
+               sys-auth/pambase
+               sys-libs/pam
+       )
+       !pam? ( virtual/libcrypt:= )
+       systemd? ( sys-apps/systemd:0=[policykit] )
+"
+RDEPEND="${DEPEND}
+       acct-user/polkitd
+       selinux? ( sec-policy/selinux-policykit )
+"
+PDEPEND="
+       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}"/polkit-0.117-CVE-2021-3560.patch
+       "${FILESDIR}"/polkit-0.120-CVE-2021-4043.patch
+)
+
+QA_MULTILIB_PATHS="
+       usr/lib/polkit-1/polkit-agent-helper-1
+       usr/lib/polkit-1/polkitd"
+
+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
+
+       if use examples; then
+               docinto examples
+               dodoc src/examples/{*.c,*.policy*}
+       fi
+
+       diropts -m 0700 -o polkitd
+       keepdir /usr/share/polkit-1/rules.d
+
+       find "${ED}" -name '*.la' -delete || die
+}
+
+pkg_postinst() {
+       chmod 0700 "${EROOT}"/{etc,usr/share}/polkit-1/rules.d
+       chown polkitd "${EROOT}"/{etc,usr/share}/polkit-1/rules.d
+}

Reply via email to