Z43EQIWNBMXB4VUXQGLJWFGVO6ZJNRL5I7HRY2622LQVYBBTUHAAC
self.update_sections(&mut dynstr_owned, &mut dynamic_owned)?;
// Avoid a reparsing in `update_sections`.
let p = Parsed {
data: p.data,
dynamic: dynamic_owned.as_ref(),
dynstr: Names(&dynstr_owned),
interp: interp_owned.as_deref(),
};
let runpath = p.runpath()?.map(|x| x.to_bytes_with_nul().to_vec());
self.update_sections(
p.data,
&mut dynstr_owned,
&mut dynamic_owned,
runpath.as_deref(),
)?;
let into_file = if let Some(into) = into {
let mut f = std::fs::OpenOptions::new()
.read(true)
.write(true)
.create(true)
.open(&into)?;
std::fs::set_permissions(into.as_ref(), self.f.metadata()?.permissions())?;
std::io::copy(&mut self.f, &mut f)?;
Some(f)
} else {
None
};
let mut elf = if let Some(ref file) = into_file {
Elf::open(&file)?
} else {
self
};
self.update_section(b".dynstr", &dynstr_owned).unwrap();
self.update_section(b".dynamic", dynamic_owned.as_bytes())
elf.update_section(b".dynstr", &dynstr_owned).unwrap();
elf.update_section(b".dynamic", dynamic_owned.as_bytes())