[pbs-devel] [PATCH v4 proxmox-backup 05/11] api: verify fixed index writer size on close
Robert Obkircher
r.obkircher at proxmox.com
Fri Jan 23 16:37:18 CET 2026
Compare it to the value submitted by the client to check that the
resizing worked as expected.
Signed-off-by: Robert Obkircher <r.obkircher at proxmox.com>
---
pbs-datastore/src/fixed_index.rs | 5 +++++
src/api2/backup/environment.rs | 8 ++++++++
2 files changed, 13 insertions(+)
diff --git a/pbs-datastore/src/fixed_index.rs b/pbs-datastore/src/fixed_index.rs
index 4290da08..ecfe9b28 100644
--- a/pbs-datastore/src/fixed_index.rs
+++ b/pbs-datastore/src/fixed_index.rs
@@ -404,6 +404,11 @@ impl FixedIndexWriter {
self.index_length
}
+ /// The total size of the referenced content. This may be increased with [`grow_to_size`].
+ pub fn size(&self) -> u64 {
+ self.size as u64
+ }
+
fn unmap(&mut self) -> Result<(), Error> {
let Some(index) = NonNull::new(self.index as *mut std::ffi::c_void) else {
return Ok(());
diff --git a/src/api2/backup/environment.rs b/src/api2/backup/environment.rs
index 90a84ed2..dc4f9bf5 100644
--- a/src/api2/backup/environment.rs
+++ b/src/api2/backup/environment.rs
@@ -637,6 +637,14 @@ impl BackupEnvironment {
}
}
+ let writer_size = data.index.size();
+ if size != writer_size {
+ bail!(
+ "fixed writer '{}' close failed - unexpected size ({size} != {writer_size})",
+ data.name,
+ );
+ }
+
let expected_csum = data.index.close()?;
data.closed = true;
--
2.47.3
More information about the pbs-devel
mailing list