diff options
author | emaste <emaste@FreeBSD.org> | 2015-01-16 18:59:15 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2015-01-16 18:59:15 +0000 |
commit | 5961fde4f1f3a419fe90af39fe7eb55223c8c0da (patch) | |
tree | 4e2687c840d3402666106862fcc76d3e2e4b8d45 /usr.sbin/crunch | |
parent | b077e94c55a70f65040e147b6291a623be13682c (diff) | |
download | FreeBSD-src-5961fde4f1f3a419fe90af39fe7eb55223c8c0da.zip FreeBSD-src-5961fde4f1f3a419fe90af39fe7eb55223c8c0da.tar.gz |
crunchide: Correct 64-bit section header offset
For 64-bit binaries the Elf_Ehdr e_shoff is at offset 40, not 44.
Instead of using an incorrect hardcoded offset, let the compiler
figure it out for us with offsetof().
Differential Revision: https://reviews.freebsd.org/D1543
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'usr.sbin/crunch')
-rw-r--r-- | usr.sbin/crunch/crunchide/exec_elf32.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/usr.sbin/crunch/crunchide/exec_elf32.c b/usr.sbin/crunch/crunchide/exec_elf32.c index d7f45b0..10e7d27 100644 --- a/usr.sbin/crunch/crunchide/exec_elf32.c +++ b/usr.sbin/crunch/crunchide/exec_elf32.c @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include <errno.h> #include <limits.h> +#include <stddef.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -464,7 +465,7 @@ ELFNAMEEND(hide)(int fd, const char *fn) if (layoutp[i].shdr == &shdrshdr && ehdr.e_shoff != shdrshdr.sh_offset) { ehdr.e_shoff = shdrshdr.sh_offset; - off = (ELFSIZE == 32) ? 32 : 44; + off = offsetof(Elf_Ehdr, e_shoff); size = sizeof(Elf_Off); if ((size_t)xwriteatoff(fd, &ehdr.e_shoff, off, size, fn) != size) |