public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATH proxmox-backup] fix #4380: stat() is run when file is executed
@ 2023-08-03 15:22 Gabriel Goller
  2023-08-04  7:42 ` Fiona Ebner
  2023-08-04  7:59 ` [pbs-devel] applied: " Fabian Grünbichler
  0 siblings, 2 replies; 8+ messages in thread
From: Gabriel Goller @ 2023-08-03 15:22 UTC (permalink / raw)
  To: pbs-devel

When executing `proxmox-backup-client backup ...
--exclude "test/test.txt"` it still executed stat() on "test.txt",
which won't work when the current user doesn't have access to the
file or the parent folder. Now we check if the file is excluded,
and if it is not, then we execute stat().

Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
---
 pbs-client/src/pxar/create.rs | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/pbs-client/src/pxar/create.rs b/pbs-client/src/pxar/create.rs
index 2577cf98..c573c2a3 100644
--- a/pbs-client/src/pxar/create.rs
+++ b/pbs-client/src/pxar/create.rs
@@ -434,6 +434,15 @@ impl Archiver {
             assert_single_path_component(os_file_name)?;
             let full_path = self.path.join(os_file_name);
 
+            let match_path = PathBuf::from("/").join(full_path.clone());
+            if self
+                .patterns
+                .matches(match_path.as_os_str().as_bytes(), None)
+                == Some(MatchType::Exclude)
+            {
+                continue;
+            }
+
             let stat = match nix::sys::stat::fstatat(
                 dir_fd,
                 file_name.as_c_str(),
@@ -444,15 +453,6 @@ impl Archiver {
                 Err(err) => return Err(err).context(format!("stat failed on {:?}", full_path)),
             };
 
-            let match_path = PathBuf::from("/").join(full_path.clone());
-            if self
-                .patterns
-                .matches(match_path.as_os_str().as_bytes(), Some(stat.st_mode))
-                == Some(MatchType::Exclude)
-            {
-                continue;
-            }
-
             self.entry_counter += 1;
             if self.entry_counter > self.entry_limit {
                 bail!(
-- 
2.39.2





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-08-04 12:09 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-03 15:22 [pbs-devel] [PATH proxmox-backup] fix #4380: stat() is run when file is executed Gabriel Goller
2023-08-04  7:42 ` Fiona Ebner
     [not found]   ` <d4bf032e-42c0-a0d7-5702-07aa9e230690@proxmox.com>
2023-08-04  8:20     ` Fiona Ebner
2023-08-04  8:35       ` Fabian Grünbichler
2023-08-04  8:21   ` Fabian Grünbichler
2023-08-04  8:52     ` Fiona Ebner
2023-08-04 12:08       ` Wolfgang Bumiller
2023-08-04  7:59 ` [pbs-devel] applied: " Fabian Grünbichler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal