From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 427C41FF17C for ; Wed, 6 Aug 2025 12:50:02 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4715F39A13; Wed, 6 Aug 2025 12:51:34 +0200 (CEST) From: Christian Ebner To: pbs-devel@lists.proxmox.com Date: Wed, 6 Aug 2025 12:51:28 +0200 Message-ID: <20250806105128.401379-1-c.ebner@proxmox.com> X-Mailer: git-send-email 2.47.2 MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1754477469318 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.044 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pbs-devel] [PATCH proxmox-backup] datastore: cleanup newly created group dir if setting owner failed X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" Setting the owner might fail for various reasons, e.g. the user might run out of space or the upload to the backend might fail in case of datastores backed by s3. Currently, this would result in the newly created but still empty group directory to be left behind, no owner file being present. That will however cause issues as the owner check is performed if the group folder is present, expecting the owner file to be present. To fix this, simply clean up the newly created backup group directory in case setting the owner failed. Reported-by: Daniel Kral Signed-off-by: Christian Ebner --- pbs-datastore/src/datastore.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pbs-datastore/src/datastore.rs b/pbs-datastore/src/datastore.rs index f039bd9a9..7cf020fc0 100644 --- a/pbs-datastore/src/datastore.rs +++ b/pbs-datastore/src/datastore.rs @@ -1008,7 +1008,10 @@ impl DataStore { let guard = backup_group.lock().with_context(|| { format!("while creating new locked backup group '{backup_group:?}'") })?; - self.set_owner(ns, backup_group.group(), auth_id, false)?; + if let Err(err) = self.set_owner(ns, backup_group.group(), auth_id, false) { + let _ = std::fs::remove_dir(&full_path); + return Err(err); + } let owner = self.get_owner(ns, backup_group.group())?; // just to be sure Ok((owner, guard)) } -- 2.47.2 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel