From e4c9eaa7e8f247eb0623350e5d15d542ca665e17 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Sun, 4 Aug 2013 15:03:29 +0200 Subject: sbtools: add helper to determine if a file is a valid ELF image Change-Id: Ie0e9c05569ca9b02fd36f31fd7323f02b14e1b60 --- utils/imxtools/sbtools/elf.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'utils/imxtools/sbtools/elf.c') diff --git a/utils/imxtools/sbtools/elf.c b/utils/imxtools/sbtools/elf.c index 226057bc19..a0b249570a 100644 --- a/utils/imxtools/sbtools/elf.c +++ b/utils/imxtools/sbtools/elf.c @@ -551,6 +551,19 @@ void elf_write_file(struct elf_params_t *params, elf_write_fn_t write, free(strtbl_content); } +bool elf_guess(elf_read_fn_t read, void *user) +{ + /* read header */ + Elf32_Ehdr ehdr; + if(!read(user, 0, &ehdr, sizeof(ehdr))) + return false; + /* basic checks */ + return ehdr.e_ident[EI_MAG0] == ELFMAG0 && ehdr.e_ident[EI_MAG1] == ELFMAG1 && + ehdr.e_ident[EI_MAG2] == ELFMAG2 && ehdr.e_ident[EI_MAG3] == ELFMAG3 && + ehdr.e_ehsize == sizeof(ehdr) && ehdr.e_phentsize == sizeof(Elf32_Phdr) && + ehdr.e_shentsize == sizeof(Elf32_Shdr); +} + bool elf_read_file(struct elf_params_t *params, elf_read_fn_t read, elf_printf_fn_t printf, void *user) { -- cgit v1.2.3