summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2019-03-27 21:54:06 +0100
committerMark Wielaard <mark@klomp.org>2019-03-27 21:57:21 +0100
commitf03ac75239e0981deaf4aa18f66f423bcc5ce051 (patch)
treedcc6a6a488695fa1d45abf046952724f9221a747
parent6bd060a23f43a842fbc37dd1bb8d6d7964eda36e (diff)
downloadelfutils-f03ac75239e0981deaf4aa18f66f423bcc5ce051.tar.gz
strip: Files with symbols referring to non-existing sections are illformed
The check added in commit 4540ea98c "strip: Fix check test for SHN_XINDEX symbol" was not complete. The (extended) section index should also exist. If it doesn't exist, mark the file as illformed. https://sourceware.org/bugzilla/show_bug.cgi?id=24385 Signed-off-by: Mark Wielaard <mark@klomp.org>
-rw-r--r--src/ChangeLog4
-rw-r--r--src/strip.c1
2 files changed, 5 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 0544fceb..fb1ac096 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2019-03-27 Mark Wielaard <mark@klomp.org>
+
+ * strip (handle_elf): Assert that symbol section number exists.
+
2019-01-24 Mark Wielaard <mark@klomp.org>
* strip.c (handle_elf): Fix check test for SHN_XINDEX symbol.
diff --git a/src/strip.c b/src/strip.c
index a73009d9..4cd87506 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -1975,6 +1975,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
&& shndxdata->d_buf != NULL);
size_t sidx = (sym->st_shndx != SHN_XINDEX
? sym->st_shndx : xshndx);
+ elf_assert (sidx < shnum);
sec = shdr_info[sidx].idx;
if (sec != 0)