Skip to content

Commit

Permalink
Fix for broken libelfs that can't handle translate-in-place on Elf_Data.
Browse files Browse the repository at this point in the history
  • Loading branch information
wrwilliams committed Nov 10, 2016
1 parent 1f08ea8 commit f32ccea
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions elf/src/Elf_X.C
Expand Up @@ -889,21 +889,31 @@ void Elf_X_Data::d_align(unsigned int input)
}
void Elf_X_Data::xlatetom(unsigned int encode)
{
Elf_Data tmp;
memcpy(&tmp, data, sizeof(Elf_Data));
tmp.d_buf = malloc(tmp.d_size);
if(is64)
{
elf64_xlatetom(data, data, encode);
elf64_xlatetom(&tmp, data, encode);
} else {
elf32_xlatetom(data, data, encode);
elf32_xlatetom(&tmp, data, encode);
}
memcpy(data->d_buf, tmp.d_buf, tmp.d_size);
free(tmp.d_buf);
}
void Elf_X_Data::xlatetof(unsigned int encode)
{
Elf_Data tmp;
memcpy(&tmp, data, sizeof(Elf_Data));
tmp.d_buf = malloc(tmp.d_size);
if(is64)
{
elf64_xlatetof(data, data, encode);
elf64_xlatetof(&tmp, data, encode);
} else {
elf32_xlatetof(data, data, encode);
elf32_xlatetof(&tmp, data, encode);
}
memcpy(data->d_buf, tmp.d_buf, tmp.d_size);
free(tmp.d_buf);
}

// Data Interface
Expand Down

0 comments on commit f32ccea

Please sign in to comment.