Stephane Billiart found an endianness bug in insmod.

This commit is contained in:
Rob Landley 2006-03-25 02:49:28 +00:00
parent 771b186406
commit 0bafd47e84

View File

@ -516,12 +516,6 @@ int delete_module(const char *);
#include <elf.h> #include <elf.h>
#include <endian.h> #include <endian.h>
#if BB_LITTLE_ENDIAN
# define ELFDATAM ELFDATA2LSB
#else
# define ELFDATAM ELFDATA2MSB
#endif
#ifndef ElfW #ifndef ElfW
# if ELFCLASSM == ELFCLASS32 # if ELFCLASSM == ELFCLASS32
# define ElfW(x) Elf32_ ## x # define ElfW(x) Elf32_ ## x
@ -3331,7 +3325,8 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
return NULL; return NULL;
} }
if (f->header.e_ident[EI_CLASS] != ELFCLASSM if (f->header.e_ident[EI_CLASS] != ELFCLASSM
|| f->header.e_ident[EI_DATA] != ELFDATAM || f->header.e_ident[EI_DATA] != (BB_BIG_ENDIAN
? ELFDATA2MSB : ELFDATA2LSB)
|| f->header.e_ident[EI_VERSION] != EV_CURRENT || f->header.e_ident[EI_VERSION] != EV_CURRENT
|| !MATCH_MACHINE(f->header.e_machine)) { || !MATCH_MACHINE(f->header.e_machine)) {
bb_error_msg("ELF file not for this architecture"); bb_error_msg("ELF file not for this architecture");