From patchwork Thu Sep 3 01:36:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Daniel M. Capella" X-Patchwork-Id: 1769 X-Patchwork-Delegate: johannes@kyriasis.com Return-Path: Delivered-To: patchwork@archlinux.org Received: from apollo.archlinux.org (localhost [127.0.0.1]) by apollo.archlinux.org (Postfix) with ESMTP id 5C98B1AE678DE for ; Thu, 3 Sep 2020 01:37:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on apollo.archlinux.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1, MAILING_LIST_MULTI=-1,RCVD_IN_DNSWL_MED=-2.3,SPF_HELO_NONE=0.001, T_DMARC_POLICY_NONE=0.01 autolearn=ham autolearn_force=no version=3.4.4 X-Spam-BL-Results: [127.0.9.2] Received: from orion.archlinux.org (orion.archlinux.org [IPv6:2a01:4f8:160:6087::1]) by apollo.archlinux.org (Postfix) with ESMTPS for ; Thu, 3 Sep 2020 01:37:28 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id A2C5E1D388E1F8; Thu, 3 Sep 2020 01:37:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=luna2; t=1599097039; bh=0iGNk8T0xun4X9TBa0p25jnnQFf7OlMDHDd7FN9jZ+0=; h=From:To:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe; b=HM1z91BMBXFtKBmhiCtemCBUd/TASy7hhPYSPLnC8rQuxEAjwdP3QFjIpNt24GPiq KDCUbcK3fclQV1RnpiTsc4eWvXzIYH8jjAw4UjGi+hIDP+KovHDiZsvBDFI21bvgK2 8c2kapENPQRPgLLXVHd9LVfIEPQM1D3d6xFaAg2thE2Fh5IaM2HPGVnyujWOVK5HYn xxxw1iRkWDIVNMtS8XoKAjbLiz02xdYPbheD8LS06ix+aMrf6GawBOB5zCKTMiGURD fmXqOGIc5HyOTCMnyZvKvlIFsrOBTDb2oJvyxKvwaJa+g/IBm9Rbj6ghKl88xlzmRa ai3LdkWspvp2U9HBOxMglcq/3QmhnGQcIC9quHRniTq1mUhSCmsieVmjJFfC3oq+1F ChCKs3J41agE/1ZNxk4TIwxVC/dpti3s5qwVUE3pkSRDrBVRgpwbURht3dO1d9gicH tXwgqvGzcnrA+byFG4/OLYEXDIwfLtDPL7eTFHkVOytxb4RJ+rWaUtdWT8P/23UUi+ o9jpImE8k9B4ZveIExwKKnQAOvoVgiOVQ83dQU+LOCcuXF4PHrBXhsbfh4UJOi7Tnn WlN/eLGWe/jDVNJn8QFM3QuQoPsYwUdGyTbp0WcCbLwmFLVj/J7Lb5StKFmOfm3aQR XOgp5IjqZRMi/gTqJXcPbBjA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=orion; t=1599097039; bh=0iGNk8T0xun4X9TBa0p25jnnQFf7OlMDHDd7FN9jZ+0=; h=From:To:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe; b=pTTWsz+9Xn3rf155VohysmB5NJwP/ekDbbwZsb8FIQ7QOLEU20kwt/e/GkPnjlgJU SYPe+d41/3+JkEEADsDs27sf9UYSj4lyN0qtC0jalbHwRW1yiU5wERxp+2zRamBm/F gQ5C0FaFenJ1dWTWYYDHM6dx9t8G2kyVKOJEIvenEo6o8xHo7Pjj0qrVhwNCafV6D2 dTgb4S5RopKFgfGhmxG7vjvRIAYrRybzJDoo7OVhIuvjdKySrpHAWlNy13KFSfZZKJ IrzFwEOgiOxp71WTBkVtVshHH8lpY9DsYcLu25eBCqqIg61tTe5gZvfBPONsvTEkXn 7/TTS33FsHuganq6Pw3KhtVmIfCwjCGy6V5Rc1scLazLZbx+e6K1R7lYx4VgC+vNab kNKa7n56vuhpyYsssgCkFVUs+ZPwPEH+XrWkfeqkBykOHExrDz2OA5dgA6B/luvMfX 4SIcrDw90VEKN8G+WbrMINlij77mPbeiGob41m0QCEybW5bo50LRsM+j5ictw8cjny N4tMCn+y2s280GrtVOBtDh/vJYslF8A7aCuEAZUAyRBeYNOYBNjn4o2/rwM3w0oP+u ZF27MM2tDmesMfZ1sFrogxvFN3vvTuSErdJE87JXqvZg77KR8uGirsHCl+oxN2Rnna m0WmgkcwjeF7+j0Kf7gnOXng= From: "Daniel M. Capella" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=orion; t=1599097033; bh=0iGNk8T0xun4X9TBa0p25jnnQFf7OlMDHDd7FN9jZ+0=; h=From:To:Subject:Date:In-Reply-To:References; b=vzxa/Mg0Cq4An2+kXn7uoqeyZ055/74JfDcT3Vi+FmFTorjYnjWtZyMWHvz+go+sL fSFCnXbPTp6dbvWcSU89amtzKnkE+cB55YSQeX40whkF3gDlkISxwph6Ds1UWRDi1K +RnnmnYulsHsKddhNOt+3B8sQo9gMuImAJHR/QYuzaXS11QasybazYIU4X8D06DQBX A01xSzcs6r3u6aCR47lygZl73tvQ/pldEYaN0cnLFYk/qCZAAz+4+rwzzQEQYJqhhM Kgti4ugBCFdKEPGSJf0MHH/x7BJNl3nhIxX6yfGKNm0Gd6iygFMyjwpOP0PLsOz5nW RZZYwk+MQSaZ0kwjFfZi4qr9IE8mWpDNZHqlK+XaJKb0v4fvu498wsin7k3miL1FN8 P9PSAwv3mVwvdV4UIArft7RzL8fkMOr+jn/U37Leu+u9USGX9XBjkp2AzV8+zba45X ISA26eEhFB6ncMWTA11v4B39c6BP1zzA3xiNy9PuHKzmnfbHbcSM6CngWMUqneHNsL yAeF4/ljEwUvH3QLG6ItpTbXbZRhfpXL1PAWXThPJd4fVWYVcr2TFgWlp/mRr8Ng0Q vJvyDe1OOmHukn7mJtUDvOsOoWfw9axCh5dEz5Qq2AOVO9PVeXbhOwRT96mtA+gDs1 xKpaMfB2cRzqBXvYG+jSE8Wo= To: pacman-contrib@lists.archlinux.org Subject: [PATCH 3/3] checkupdates: Do not use sudo when run as root Date: Wed, 2 Sep 2020 21:36:55 -0400 Message-Id: <20200903013655.92224-3-polyzen@archlinux.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200903013655.92224-1-polyzen@archlinux.org> References: <20200903013655.92224-1-polyzen@archlinux.org> MIME-Version: 1.0 X-BeenThere: pacman-contrib@lists.archlinux.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Discussion list for pacman-contrib development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: pacman-contrib-bounces@lists.archlinux.org Sender: "pacman-contrib" runcmd() taken from paccache. Fixes FS#64328 Signed-off-by: Daniel M. Capella --- src/checkupdates.sh.in | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/checkupdates.sh.in b/src/checkupdates.sh.in index ba9b960..67ff144 100644 --- a/src/checkupdates.sh.in +++ b/src/checkupdates.sh.in @@ -30,6 +30,24 @@ USE_COLOR=0 source "$LIBRARY"/util/message.sh source "$LIBRARY"/util/parseopts.sh +die() { + error "$@" + exit 1 +} + +runcmd() { + if (( EUID != 0 )); then + msg 'Escalating privileges using sudo' + if sudo -v &>/dev/null && sudo -l &>/dev/null; then + sudo "$@" + else + die 'Failed to escalate' + fi + else + "$@" + fi +} + usage() { cat << __EOF__ ${myname} v${myver} @@ -80,8 +98,7 @@ else fi if ! type -P fakeroot >/dev/null; then - error 'Cannot find the fakeroot binary.' - exit 1 + die 'Cannot find the fakeroot binary' fi if [[ -z $CHECKUPDATES_DB ]]; then @@ -98,15 +115,14 @@ fi mkdir -p "$CHECKUPDATES_DB" ln -s "${DBPath}/local" "$CHECKUPDATES_DB" &> /dev/null if ! fakeroot -- pacman -Sy --dbpath "$CHECKUPDATES_DB" --logfile /dev/null &> /dev/null; then - error 'Cannot fetch updates' - exit 1 + die 'Cannot fetch updates' fi mapfile -t updates < <(pacman -Qu --dbpath "$CHECKUPDATES_DB" 2> /dev/null | grep -v '\[.*\]') if (( ${#updates[@]} )); then printf '%s\n' "${updates[@]}" if (( DOWNLOAD_CACHE )); then - sudo pacman -Sw --noconfirm "${updates[@]%% *}" --dbpath "$CHECKUPDATES_DB" --logfile /dev/null + runcmd pacman -Sw --noconfirm "${updates[@]%% *}" --dbpath "$CHECKUPDATES_DB" --logfile /dev/null fi else exit 2