commit:     8029ba6c8920e379ea1f5f71afc297bfd30925b3
Author:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 20 20:31:38 2019 +0000
Commit:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
CommitDate: Sat Apr 20 20:33:43 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8029ba6c

app-misc/uptimed: Attempt to fix privilege escalation in pkg_postinst

Bug: https://bugs.gentoo.org/630810
Package-Manager: Portage-2.3.64, Repoman-2.3.12
Signed-off-by: Lars Wendler <polynomial-c <AT> gentoo.org>

 app-misc/uptimed/uptimed-0.4.0-r1.ebuild | 19 +++++++++++++------
 app-misc/uptimed/uptimed-0.4.1.ebuild    | 19 +++++++++++++------
 2 files changed, 26 insertions(+), 12 deletions(-)

diff --git a/app-misc/uptimed/uptimed-0.4.0-r1.ebuild 
b/app-misc/uptimed/uptimed-0.4.0-r1.ebuild
index 2fbdfafd16b..cea4bac4db8 100644
--- a/app-misc/uptimed/uptimed-0.4.0-r1.ebuild
+++ b/app-misc/uptimed/uptimed-0.4.0-r1.ebuild
@@ -1,9 +1,9 @@
-# Copyright 1999-2017 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
 
-inherit autotools eutils user systemd
+inherit autotools ltprune user systemd
 
 DESCRIPTION="System uptime record daemon that keeps track of your highest 
uptimes"
 HOMEPAGE="https://github.com/rpodgorny/uptimed/";
@@ -36,15 +36,22 @@ src_install() {
        local DOCS=( ChangeLog README.md TODO AUTHORS CREDITS INSTALL.cgi 
sample-cgi/* )
        default
        prune_libtool_files --all
-       keepdir /var/spool/uptimed
-       fowners uptimed:uptimed /var/spool/uptimed
+
+       local spooldir="/var/spool/${PN}"
+       keepdir ${spooldir}
+       fowners uptimed:uptimed ${spooldir}
+
        newinitd "${FILESDIR}"/${PN}.init-r1 uptimed
        systemd_dounit "${FILESDIR}/${PN}.service"
 }
 
 pkg_postinst() {
-       einfo "Fixing permissions in /var/spool/${PN}"
-       chown -R uptimed:uptimed /var/spool/${PN}
+       local spooldir="/var/spool/${PN}"
+       if [[ -d "${spooldir}" ]] ; then
+               einfo "Fixing permissions in ${spooldir}"
+               find ${spooldir} -type f -print0 \
+                       | xargs --null chown uptimed:uptimed || die
+       fi
        echo
        elog "Start uptimed with '/etc/init.d/uptimed start' (for openRC)"
        elog "or systemctl start uptimed (for systemd)"

diff --git a/app-misc/uptimed/uptimed-0.4.1.ebuild 
b/app-misc/uptimed/uptimed-0.4.1.ebuild
index 498d1fc6475..cc06a89220a 100644
--- a/app-misc/uptimed/uptimed-0.4.1.ebuild
+++ b/app-misc/uptimed/uptimed-0.4.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
@@ -33,16 +33,23 @@ src_configure() {
 src_install() {
        local DOCS=( ChangeLog README.md TODO AUTHORS CREDITS INSTALL.cgi 
sample-cgi/* )
        default
-       find "${ED}" \( -name '*.a' -o -name '*.la' \) -delete || die
-       keepdir /var/spool/uptimed
-       fowners uptimed:uptimed /var/spool/uptimed
+       find "${ED}" -name '*.la' -delete || die
+
+       local spooldir="/var/spool/${PN}"
+       keepdir ${spooldir}
+       fowners uptimed:uptimed ${spooldir}
+
        newinitd "${FILESDIR}"/${PN}.init-r1 uptimed
        systemd_dounit "${FILESDIR}/${PN}.service"
 }
 
 pkg_postinst() {
-       einfo "Fixing permissions in /var/spool/${PN}"
-       chown -R uptimed:uptimed /var/spool/${PN}
+       local spooldir="/var/spool/${PN}"
+       if [[ -d "${spooldir}" ]] ; then
+               einfo "Fixing permissions in ${spooldir}"
+               find ${spooldir} -type f -print0 \
+                       | xargs --null chown uptimed:uptimed || die
+       fi
        echo
        elog "Start uptimed with '/etc/init.d/uptimed start' (for openRC)"
        elog "or systemctl start uptimed (for systemd)"

Reply via email to