Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Jan 2015 18:59:16 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r277259 - head/usr.sbin/crunch/crunchide
Message-ID:  <201501161859.t0GIxGjh026451@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Fri Jan 16 18:59:15 2015
New Revision: 277259
URL: https://svnweb.freebsd.org/changeset/base/277259

Log:
  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

Modified:
  head/usr.sbin/crunch/crunchide/exec_elf32.c

Modified: head/usr.sbin/crunch/crunchide/exec_elf32.c
==============================================================================
--- head/usr.sbin/crunch/crunchide/exec_elf32.c	Fri Jan 16 18:51:26 2015	(r277258)
+++ head/usr.sbin/crunch/crunchide/exec_elf32.c	Fri Jan 16 18:59:15 2015	(r277259)
@@ -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)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201501161859.t0GIxGjh026451>