From 084a2fa87d40e2b4c10b71df46205bfe3d1903a1 Mon Sep 17 00:00:00 2001 From: Alexander Batischev Date: Wed, 28 Jul 2021 22:35:04 +0300 Subject: Backup: exit non-zero if new tags are found --- src/cmd/backup.rs | 8 ++++++-- src/error.rs | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cmd/backup.rs b/src/cmd/backup.rs index 496477e..04dfb05 100644 --- a/src/cmd/backup.rs +++ b/src/cmd/backup.rs @@ -49,7 +49,7 @@ impl Backup { if is_incremental && !outcome.new_cachedir_tags.is_empty() { println!("New CACHEDIR.TAG files since the last backup:"); - for t in outcome.new_cachedir_tags { + for t in &outcome.new_cachedir_tags { println!("- {:?}", t); } println!("You can configure Obnam to ignore all such files by setting `exclude_cache_tag_directories` to `false`."); @@ -62,7 +62,11 @@ impl Backup { outcome.warnings.len(), )?; - Ok(()) + if is_incremental && !outcome.new_cachedir_tags.is_empty() { + Err(ObnamError::NewCachedirTagsFound) + } else { + Ok(()) + } } } diff --git a/src/error.rs b/src/error.rs index e4d77d3..30571ec 100644 --- a/src/error.rs +++ b/src/error.rs @@ -52,4 +52,9 @@ pub enum ObnamError { #[error(transparent)] SerdeJsonError(#[from] serde_json::Error), + + #[error( + "found CACHEDIR.TAG files that aren't present in the previous backup, might be an attack" + )] + NewCachedirTagsFound, } -- cgit v1.2.1