From f3e50baaf855b5700d93a762a9bec897d1f04398 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Mon, 8 Jun 2020 09:55:31 +0200 Subject: [PATCH] encoder: fix contents of hardlinks Signed-off-by: Wolfgang Bumiller --- src/encoder/mod.rs | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/encoder/mod.rs b/src/encoder/mod.rs index 1189d0b..b779b8d 100644 --- a/src/encoder/mod.rs +++ b/src/encoder/mod.rs @@ -371,18 +371,13 @@ impl<'a, T: SeqWrite + 'a> EncoderImpl<'a, T> { io_bail!("invalid hardlink offset, can only point to prior files"); } - let hardlink = format::Hardlink { - offset: current_offset - target_offset.0, - data: target.as_os_str().as_bytes().to_vec(), - }; - let hardlink = unsafe { - std::slice::from_raw_parts( - &hardlink as *const format::Hardlink as *const u8, - size_of::(), - ) - }; + let offset_bytes = (current_offset - target_offset.0).to_le_bytes(); + let target_bytes = target.as_os_str().as_bytes(); + let mut hardlink = Vec::with_capacity(offset_bytes.len() + target_bytes.len()); + hardlink.extend(&offset_bytes); + hardlink.extend(target_bytes); let _this_offset: LinkOffset = self - .add_file_entry(None, file_name, Some((format::PXAR_HARDLINK, hardlink))) + .add_file_entry(None, file_name, Some((format::PXAR_HARDLINK, &hardlink))) .await?; Ok(()) } -- 2.39.5