diff options
| author | Mark Wielaard <[email protected]> | 2016-02-09 14:18:49 +0100 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2016-02-15 23:45:19 +0100 |
| commit | f4dc76404ce8116b806550d7515ec98be953df9e (patch) | |
| tree | 0b3726e266f8cc6f71c1f24d105217c9d1e5370a /src/ChangeLog | |
| parent | 22035605b9da4a6ee07385c0e7715fe8d35488a4 (diff) | |
elflint: Fix sh_entsize check when comparing SHT_HASH and SHT_GNU_HASH.
GCC6 -Wduplicated-cond found the following issue:
elflint.c: In function ‘compare_hash_gnu_hash’:
elflint.c:2483:34: error: duplicated ‘if’ condition [-Werror=duplicated-cond]
else if (hash_shdr->sh_entsize == sizeof (Elf64_Word))
~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
elflint.c:2448:29: note: previously used here
if (hash_shdr->sh_entsize == sizeof (Elf32_Word))
~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
Which is correct, a Word in both Elf32 and Elf64 files is 4 bytes.
We meant to check for sizeof (Elf64_Xword) which is 8 bytes.
Also fix the section index and name in the error message.
The reason we probably didn't see this issue before is that SHT_HASH
sections really always should have sh_entsize of 4 even on 64bit arches.
There are however a couple of arches with mistakes in their sysv ABI.
See libelf/common.h. This also would only be triggered if on such an
architectures when the ELF file would have both a SHT_HASH and SHT_GNU_HASH
section and elflint would try to compare those sections.
Add an example testfile-s390x-hash-both to run-elflint-test.sh.
Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'src/ChangeLog')
| -rw-r--r-- | src/ChangeLog | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 707c2717..e4b17d62 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2016-02-09 Mark Wielaard <[email protected]> + + * elflint.c (compare_hash_gnu_hash): Check hash sh_entsize against + sizeof (Elf64_Xword). Correct invalid sh_entsize error message + section idx and name. + 2016-01-13 Mark Wielaard <[email protected]> * elflint.c (check_elf_header): Recognize ELFOSABI_FREEBSD. |
