mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 08:43:19 -04:00
elfcopy: copy raw (untranslated) contents to binary output
Previously elfcopy used elf_getdata to obtain data from ELF sections being copied to binary output, but elf_getdata returns data that has been translated - that is, data is in host byte order. When the host and target differ in endianness (e.g., converting a big-endian MIPS ELF object to binary on an x86 host) this resulted in byte-swapped data in certain sections such as .dynamic. Instead use elf_rawdata to keep data in the original, target endianness. Reported by: Hiroki Mori <yamori83@yahoo.co.jp>, Bill Yuan MFC after: 1 week Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
7d3df1907a
commit
aadb68849f
1 changed files with 2 additions and 2 deletions
|
|
@ -101,10 +101,10 @@ create_binary(int ifd, int ofd)
|
|||
sh.sh_size == 0)
|
||||
continue;
|
||||
(void) elf_errno();
|
||||
if ((d = elf_getdata(scn, NULL)) == NULL) {
|
||||
if ((d = elf_rawdata(scn, NULL)) == NULL) {
|
||||
elferr = elf_errno();
|
||||
if (elferr != 0)
|
||||
warnx("elf_getdata failed: %s", elf_errmsg(-1));
|
||||
warnx("elf_rawdata failed: %s", elf_errmsg(-1));
|
||||
continue;
|
||||
}
|
||||
if (d->d_buf == NULL || d->d_size == 0)
|
||||
|
|
|
|||
Loading…
Reference in a new issue