summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2016-11-24 00:46:34 +0000
committeremaste <emaste@FreeBSD.org>2016-11-24 00:46:34 +0000
commit16165b4c35ba2f47480383759cd08703a8515756 (patch)
tree0dbe2db6aff30fbf14b6f089908ac7cb257682d2
parent404e4680d8c46cac0b48cb1ca2226d8ba16fbbde (diff)
downloadFreeBSD-src-16165b4c35ba2f47480383759cd08703a8515756.zip
FreeBSD-src-16165b4c35ba2f47480383759cd08703a8515756.tar.gz
MFC r308772: crunchide: report explicit error for combined string table
Some tools produce objects with a combined strtab and shstrtab. These objects are not supported by crunchide since it rewrites the symtab and strtab to "hide" symbols. This invalidates section header offsets into a combined strtab/shstrtab. In the future we could support these objects (by ensuring that we retain unmodified section name strings in the output .strtab, and then rewriting each section header's sh_name).
-rw-r--r--usr.sbin/crunch/crunchide/exec_elf32.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/usr.sbin/crunch/crunchide/exec_elf32.c b/usr.sbin/crunch/crunchide/exec_elf32.c
index 666f78c..6b64658 100644
--- a/usr.sbin/crunch/crunchide/exec_elf32.c
+++ b/usr.sbin/crunch/crunchide/exec_elf32.c
@@ -280,6 +280,10 @@ ELFNAMEEND(hide)(int fd, const char *fn)
weird = 1;
weirdreason = "section header string table does not exist";
}
+ if (strtabshdr == shstrtabshdr) {
+ weird = 1;
+ weirdreason = "combined strtab and shstrtab not supported";
+ }
if (weirdreason == NULL)
weirdreason = "unsupported";
if (weird) {
OpenPOWER on IntegriCloud