Discussion:
[PATCH] elfedit: Move ELF header magic bytes check to get_file_header
H.J. Lu
2018-11-03 22:09:38 UTC
Permalink
Skip the file if ELF header magic bytes doesn't match.

* elfedit.c (update_elf_header): Move EI_MAG? check to ...
(get_file_header): Here.
---
binutils/ChangeLog | 5 +++++
binutils/elfedit.c | 19 ++++++-------------
2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 19475697b3..bdbee0fff6 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,8 @@
+2018-11-03 H.J. Lu <***@intel.com>
+
+ * elfedit.c (update_elf_header): Move EI_MAG? check to ...
+ (get_file_header): Here.
+
2018-11-02 H.J. Lu <***@intel.com>

* configure.ac (AC_FUNC_MMAP): New.
diff --git a/binutils/elfedit.c b/binutils/elfedit.c
index 5ad846eb1a..a9f7c9d845 100644
--- a/binutils/elfedit.c
+++ b/binutils/elfedit.c
@@ -91,17 +91,6 @@ update_elf_header (const char *file_name, FILE *file)
{
int class, machine, type, status, osabi;

- if (elf_header.e_ident[EI_MAG0] != ELFMAG0
- || elf_header.e_ident[EI_MAG1] != ELFMAG1
- || elf_header.e_ident[EI_MAG2] != ELFMAG2
- || elf_header.e_ident[EI_MAG3] != ELFMAG3)
- {
- error
- (_("%s: Not an ELF file - wrong magic bytes at the start\n"),
- file_name);
- return 0;
- }
-
if (elf_header.e_ident[EI_VERSION] != EV_CURRENT)
{
error
@@ -212,6 +201,12 @@ get_file_header (FILE * file)
if (fread (elf_header.e_ident, EI_NIDENT, 1, file) != 1)
return 0;

+ if (elf_header.e_ident[EI_MAG0] != ELFMAG0
+ || elf_header.e_ident[EI_MAG1] != ELFMAG1
+ || elf_header.e_ident[EI_MAG2] != ELFMAG2
+ || elf_header.e_ident[EI_MAG3] != ELFMAG3)
+ return 0;
+
/* Determine how to read the rest of the header. */
switch (elf_header.e_ident[EI_DATA])
{
@@ -232,8 +227,6 @@ get_file_header (FILE * file)
switch (elf_header.e_ident[EI_CLASS])
{
default:
- error (_("Unsupported EI_CLASS: %d\n"),
- elf_header.e_ident[EI_CLASS]);
return 0;

case ELFCLASS32:
--
2.19.1
Loading...