From patchwork Mon Mar 4 14:18:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 1907640 X-Patchwork-Delegate: zajec5@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=UR0rQUSf; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=WjFtm0CO; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.openwrt.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=patchwork.ozlabs.org) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4TpLTG5pgvz23qH for ; Tue, 5 Mar 2024 01:20:49 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=4sOSPPQ35HJk6KqLLxTuSnLFCYdxbFTIoFpdAc9697E=; b=UR0rQUSfMf0z7e O4+CUzYP1tubqEj56OG1UloNGeYo+EJ+jWbQIDvpWvMy3yisSuNjlob/Z/UrHA+e0Dwt3UEMZit5O BFZn3y5BUbdyPrWapga36Dryy6WTiSE8jPjnU6gv/ynsaEHxwXdf2MgkzBlicMweGbDLoXTqEFgZM 09OghOeRtzWqqjdKmSWoA6jmkEfTfxkiGYvuGBAtFLjBf9i5tsrRG3wT8ObmNTrQ1gOxVavQ6NoRV tWZQpF4AqTE546XPjkp4i5gYpB65uYcWHiQgWW3SdxaNi314EWPqsMHGBDgmAQuA4SdK2nFi6SAbt WFWuekAa8Z0QwR/9PWJw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rh99E-00000009Kza-2aiX; Mon, 04 Mar 2024 14:18:32 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rh996-00000009Kwa-0S9k for openwrt-devel@lists.openwrt.org; Mon, 04 Mar 2024 14:18:30 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-a44665605f3so480392266b.2 for ; Mon, 04 Mar 2024 06:18:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709561898; x=1710166698; darn=lists.openwrt.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=CsoY6PFZydlWakfO75PKn/S9+ZwbJLV95jpwn3sijP8=; b=WjFtm0COg9eYi2qnNR0sznt9RPVi24AF+dZZeX7YmxR8cbxzlBPmGb9o1WmWdZrpkv oGJrwY3/FSzEd6QazH1J3D28SbZ153PXJ30UkknpSCpdBFvXvyO6DWy1ziHHR/dWrvOw d1SYUMZ1w7xMFFOnM7fBk9uORU6z5NqcAG75uOq4AdWnvfIryp4lUvJXwT2q8h6U/f0W sK4NCDyoXI4nZ3DrbMkFka05kHbEA+Nd6nnpTe3Y7qVgSJV8maoH6/aOVP3dRu3AC0+x Lskqkq1rY4r5suePsTTmLGeYuwoYc6/TcGD1HK4ZxSZppRxonGJ1c2PdU2NBmvhmeFxM HKng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709561898; x=1710166698; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=CsoY6PFZydlWakfO75PKn/S9+ZwbJLV95jpwn3sijP8=; b=SheYIDuCsuPPVcqezmHVYgcfZg1YVyjdr/TwhVRJSQiGuT//XsXBIAMumiJ5ZmSGnX AGc0Tod5vlbLuN9MF1iYmb2SEFNqbKiywdyktOElKd4Ae8Kx3vuZzf+EWCjlvDpYcWIx /tx683aMxaTfwTx7PViod5g7REHAmd9c5y6eBjKcvIUb/LUtPXAOz5QhBneRrN3FObz9 fmiW63MsV1h+jYh9FB3HWeVvVuCZChuZwKafW8iCs6NexoBomX7c9bc2ybq1gDi2yscX Gk8iIwQpJybHwjHP/G0pDfZwAOewAzjELtqzRHQHxqE0PQ11nbEHi7WtQm1tC45Oomco UZUQ== X-Gm-Message-State: AOJu0YyfR3Fo6Lt9GArRF0fQ7YNGQeua/P2FsmR5yU0WWlqGq9UB5A0Q Jowcu9Cqo/ZSKfx8XR7qSxVaJUtKeAu2ljU2Wy9J7Lvn/fxitX+6jCVtLtO2 X-Google-Smtp-Source: AGHT+IGaeTMC5zrQzPtZzLeGCkaBUaybNVWAe3e2jclvlwCGRtTms5/cKXK5D+Jpl3Q0XsK73gp8sA== X-Received: by 2002:a17:906:3749:b0:a45:8bf3:6ec6 with SMTP id e9-20020a170906374900b00a458bf36ec6mr236566ejc.25.1709561898077; Mon, 04 Mar 2024 06:18:18 -0800 (PST) Received: from localhost.lan (031011218106.poznan.vectranet.pl. [31.11.218.106]) by smtp.gmail.com with ESMTPSA id w9-20020a1709064a0900b00a44f0d99d58sm2466580eju.208.2024.03.04.06.18.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 06:18:17 -0800 (PST) From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= To: openwrt-devel@lists.openwrt.org Cc: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= , Luiz Angelo Daros de Luca , Jo-Philipp Wich Subject: [PATCH] base-files: sysupgrade: handle errors when generating backup Date: Mon, 4 Mar 2024 15:18:13 +0100 Message-Id: <20240304141813.32193-1-zajec5@gmail.com> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240304_061826_224133_66F89E1A X-CRM114-Status: GOOD ( 11.54 ) X-Spam-Score: 0.0 (/) X-Spam-Report: =?unknown-8bit?q?Spam_detection_software=2C_running_on_the_sy?= =?unknown-8bit?q?stem_=22bombadil=2Einfradead=2Eorg=22=2C?= =?unknown-8bit?q?_has_NOT_identified_this_incoming_email_as_spam=2E__The_ori?= =?unknown-8bit?q?ginal?= =?unknown-8bit?q?_message_has_been_attached_to_this_so_you_can_view_it_or_la?= =?unknown-8bit?q?bel?= =?unknown-8bit?q?_similar_future_email=2E__If_you_have_any_questions=2C_see?= =?unknown-8bit?q?_the_administrator_of_that_system_for_details=2E?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_preview=3A__From=3A_Rafa=C5=82_Mi=C5=82ecki_1=2E_R?= =?unknown-8bit?q?eturn_error_if_any_step_of_generating?= =?unknown-8bit?q?_tar_file_fails_2=2E_Use_pipefail_to_avoid_calling_=22gzip?= =?unknown-8bit?q?=22_if_tar_failed_Fixes=3A?= =?unknown-8bit?q?_e36cc530927c_=28=22base-files=3A_sysupgrade=3A_use_tar_hel?= =?unknown-8bit?q?per_to_include_installed=5Fpackages=2Etxt=22=29?= =?unknown-8bit?q?_Reported-by=3A_Luiz_Angelo_Daros_de_Luca_Cc=3A_Luiz_Angelo?= =?unknown-8bit?q?_Daros_de_Luca_Cc=3A?= =?unknown-8bit?q?_Jo-Philipp_Wich_Signed-o_=5B=2E=2E=2E=5D_?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_analysis_details=3A___=280=2E0_points=2C_5=2E0_req?= =?unknown-8bit?q?uired=29?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_pts_rule_name______________description?= =?unknown-8bit?q?_----_----------------------_------------------------------?= =?unknown-8bit?q?--------------------?= =?unknown-8bit?q?_-0=2E0_SPF=5FPASS_______________SPF=3A_sender_matches_SPF_?= =?unknown-8bit?q?record?= =?unknown-8bit?q?_0=2E0_SPF=5FHELO=5FNONE__________SPF=3A_HELO_does_not_publ?= =?unknown-8bit?q?ish_an_SPF_Record?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID=5FEF__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from?= =?unknown-8bit?q?_envelope-from_domain?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID_____________Message_has_at_least_one_v?= =?unknown-8bit?q?alid_DKIM_or_DK_signature?= =?unknown-8bit?q?_0=2E1_DKIM=5FSIGNED____________Message_has_a_DKIM_or_DK_si?= =?unknown-8bit?q?gnature=2C_not_necessarily_valid?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID=5FAU__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from_author=27s?= =?unknown-8bit?q?_domain?= =?unknown-8bit?q?_0=2E2_FREEMAIL=5FENVFROM=5FEND=5FDIGIT_Envelope-from_freem?= =?unknown-8bit?q?ail_username_ends_in?= =?unknown-8bit?q?_digit?= =?unknown-8bit?q?_=5Bzajec5=28at=29gmail=2Ecom=5D?= =?unknown-8bit?q?_0=2E0_FREEMAIL=5FFROM__________Sender_email_is_commonly_ab?= =?unknown-8bit?q?used_enduser_mail_provider?= =?unknown-8bit?q?_=5Bzajec5=28at=29gmail=2Ecom=5D?= =?unknown-8bit?q?_-0=2E0_T=5FSCC=5FBODY=5FTEXT=5FLINE___No_description_avail?= =?unknown-8bit?q?able=2E?= =?unknown-8bit?q?_-0=2E0_RCVD=5FIN=5FDNSWL=5FNONE_____RBL=3A_Sender_listed_a?= =?unknown-8bit?q?t_https=3A//www=2Ednswl=2Eorg/=2C_no?= =?unknown-8bit?q?_trust?= =?unknown-8bit?b?IFsyYTAwOjE0NTA6NDg2NDoyMDowOjA6MDo2MzAgbGlzdGVkIGluXQ==?= =?unknown-8bit?b?IFtsaXN0LmRuc3dsLm9yZ10=?= X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org From: Rafał Miłecki 1. Return error if any step of generating tar file fails 2. Use pipefail to avoid calling "gzip" if tar failed Fixes: e36cc530927c ("base-files: sysupgrade: use tar helper to include installed_packages.txt") Reported-by: Luiz Angelo Daros de Luca Cc: Luiz Angelo Daros de Luca Cc: Jo-Philipp Wich Signed-off-by: Rafał Miłecki --- package/base-files/files/sbin/sysupgrade | 45 +++++++++++++++--------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade index 720f3da3fa..80e65b199a 100755 --- a/package/base-files/files/sbin/sysupgrade +++ b/package/base-files/files/sbin/sysupgrade @@ -237,6 +237,7 @@ include /lib/upgrade create_backup_archive() { local conf_tar="$1" local disabled + local err [ "$(rootfs_type)" = "tmpfs" ] && { echo "Cannot save config while running from ramdisk." >&2 @@ -251,31 +252,43 @@ create_backup_archive() { v "Saving config files..." [ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V="" sed -i -e 's,^/,,' "$CONFFILES" + set -o pipefail { - for service in /etc/init.d/*; do - if ! $service enabled; then + local ret=0 + + if [ $ret -eq 0 ]; then + for service in /etc/init.d/*; do + if ! $service enabled; then disabled="$disabled$service disable\n" - fi - done - disabled="$disabled\nexit 0" - tar_print_member "/etc/uci-defaults/10_disable_services" "$(echo -e $disabled)" + fi + done + disabled="$disabled\nexit 0" + tar_print_member "/etc/uci-defaults/10_disable_services" "$(echo -e $disabled)" || ret=1 + fi # Part of archive with installed packages info - if [ "$SAVE_INSTALLED_PKGS" -eq 1 ]; then - # Format: pkg-name{rom,overlay,unknown} - # rom is used for pkgs in /rom, even if updated later - tar_print_member "$INSTALLED_PACKAGES" "$(find /usr/lib/opkg/info -name "*.control" \( \ - \( -exec test -f /rom/{} \; -exec echo {} rom \; \) -o \ - \( -exec test -f /overlay/upper/{} \; -exec echo {} overlay \; \) -o \ - \( -exec echo {} unknown \; \) \ - \) | sed -e 's,.*/,,;s/\.control /\t/')" + if [ $ret -eq 0 ]; then + if [ "$SAVE_INSTALLED_PKGS" -eq 1 ]; then + # Format: pkg-name{rom,overlay,unknown} + # rom is used for pkgs in /rom, even if updated later + tar_print_member "$INSTALLED_PACKAGES" "$(find /usr/lib/opkg/info -name "*.control" \( \ + \( -exec test -f /rom/{} \; -exec echo {} rom \; \) -o \ + \( -exec test -f /overlay/upper/{} \; -exec echo {} overlay \; \) -o \ + \( -exec echo {} unknown \; \) \ + \) | sed -e 's,.*/,,;s/\.control /\t/')" || ret=1 + fi fi # Rest of archive with config files and ending padding - tar c${TAR_V} -C / -T "$CONFFILES" + if [ $ret -eq 0 ]; then + tar c${TAR_V} -C / -T "$CONFFILES" || ret=1 + fi + + [ $ret -eq 0 ] } | gzip > "${conf_tar:-/proc/self/fd/1}" + err=$? + set +o pipefail - local err=$? if [ "$err" -ne 0 ]; then echo "Failed to create the configuration backup." [ -f "$conf_tar" ] && rm -f "$conf_tar"