diff options
author | Alexander Batischev <eual.jp@gmail.com> | 2021-07-28 22:35:04 +0300 |
---|---|---|
committer | Alexander Batischev <eual.jp@gmail.com> | 2021-07-28 23:04:00 +0300 |
commit | 084a2fa87d40e2b4c10b71df46205bfe3d1903a1 (patch) | |
tree | 5ec83d38c4ba3fc54fcd9b71d06b24fc8518b4ef /src | |
parent | 8f8efa64058beeeafa933c54e248fd32950ec772 (diff) | |
download | obnam2-084a2fa87d40e2b4c10b71df46205bfe3d1903a1.tar.gz |
Backup: exit non-zero if new tags are found
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd/backup.rs | 8 | ||||
-rw-r--r-- | src/error.rs | 5 |
2 files changed, 11 insertions, 2 deletions
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, } |