summaryrefslogtreecommitdiffstats
path: root/usr.sbin/crunch/crunchide/exec_elf32.c
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2015-01-23 02:39:00 +0000
committeremaste <emaste@FreeBSD.org>2015-01-23 02:39:00 +0000
commit23ccab912a903dc5714f61e29d179fb7a18525d0 (patch)
tree571826ef286691d28bdb27cf57c02764bb59a1d0 /usr.sbin/crunch/crunchide/exec_elf32.c
parentfb31f7e88b7e2fdedda30a82110a080b8e71fc0e (diff)
downloadFreeBSD-src-23ccab912a903dc5714f61e29d179fb7a18525d0.zip
FreeBSD-src-23ccab912a903dc5714f61e29d179fb7a18525d0.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(). MFC of r277259
Diffstat (limited to 'usr.sbin/crunch/crunchide/exec_elf32.c')
-rw-r--r--usr.sbin/crunch/crunchide/exec_elf32.c3
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 752007f..8813497 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)
OpenPOWER on IntegriCloud