[pbs-devel] [PATCH v2 pxar 1/5] format: add helper for payload header consistency checks
Christian Ebner
c.ebner at proxmox.com
Tue Jun 11 15:29:42 CEST 2024
The helper method will be used to check the payload header being
consistent with what was encoded as paylaod reference for split
pxar archives.
Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
---
changes since version 1:
- not present in previous version
src/format/mod.rs | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/src/format/mod.rs b/src/format/mod.rs
index 59d40e1..746f39d 100644
--- a/src/format/mod.rs
+++ b/src/format/mod.rs
@@ -823,3 +823,24 @@ pub fn check_file_name(path: &Path) -> io::Result<()> {
Ok(())
}
}
+
+/// Check if provided header is of type payload and the headers content size matches given size.
+///
+/// Returns an [`io::Error`](std::io::Error) of type [`Other`](std::io::ErrorKind::Other) if that's
+/// not the case.
+pub fn check_payload_header_and_size(header: &Header, size: u64) -> io::Result<()> {
+ header.check_header_size()?;
+
+ if header.htype != PXAR_PAYLOAD {
+ io_bail!("unexpected header: expected {PXAR_PAYLOAD:x?} , got {header:x?}");
+ }
+
+ if header.content_size() != size {
+ io_bail!(
+ "encountered size mismatch: expected {}, got {size}",
+ header.content_size()
+ );
+ }
+
+ Ok(())
+}
--
2.39.2
More information about the pbs-devel
mailing list