From: Wolfgang Bumiller Date: Fri, 5 Jun 2020 14:26:13 +0000 (+0200) Subject: encoder: use relative hardlink offsets X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=63f2296f0ca3fa514fcc2dbcb079af255fcfc2e9;p=pxar.git encoder: use relative hardlink offsets Signed-off-by: Wolfgang Bumiller --- diff --git a/src/encoder/mod.rs b/src/encoder/mod.rs index 73ee887..1189d0b 100644 --- a/src/encoder/mod.rs +++ b/src/encoder/mod.rs @@ -364,10 +364,15 @@ impl<'a, T: SeqWrite + 'a> EncoderImpl<'a, T> { &mut self, file_name: &Path, target: &Path, - offset: LinkOffset, + target_offset: LinkOffset, ) -> io::Result<()> { + let current_offset = seq_write_position(&mut self.output).await?; + if current_offset <= target_offset.0 { + io_bail!("invalid hardlink offset, can only point to prior files"); + } + let hardlink = format::Hardlink { - offset: offset.0, + offset: current_offset - target_offset.0, data: target.as_os_str().as_bytes().to_vec(), }; let hardlink = unsafe {