diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-08-10 05:41:26 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-08-10 05:41:26 +0000 |
commit | e79137b2fb8bda5e06ee2a618964604831d440cc (patch) | |
tree | 61d03e961c9a7849ba641fb20b2c032d1f0f5d13 /elf/dl-load.c | |
parent | 918736844a6d9250240d5c0ddb67577f1dd29758 (diff) | |
download | glibc-e79137b2fb8bda5e06ee2a618964604831d440cc.tar.gz glibc-e79137b2fb8bda5e06ee2a618964604831d440cc.tar.xz glibc-e79137b2fb8bda5e06ee2a618964604831d440cc.zip |
Update.
1999-08-09 Scott Bambrough <scottb@netwinder.org> * elf/elf.h: Added definition of ELFOSABI_ARM. * elf/dl-load.c (_dl_map_object_from_fd): Use VALID_ELF_HEADER, VALID_ELF_OSABI, VALID_ELF_ABIVERSION to decide whether an object's header and ABI values are acceptable. (VALID_ELF_HEADER): New macro; provide default definition. (VALID_ELF_OSABI): New macro; provide default definition. (VALID_ELF_ABIVERSION): New macro; provide default definition. * sysdeps/arm/dl-machine.h Define ARM specific versions of VALID_ELF_HEADER, VALID_ELF_OSABI, VALID_ELF_ABIVERSION. 1999-08-09 Andreas Schwab <schwab@suse.de> * inet/tst-ipnode.c (main): Don't compare integer with NULL. 1999-08-09 Thorsten Kukuk <kukuk@suse.de> * sunrpc/svc_run.c (svc_run): Free my_pollfd. 1999-08-09 Andreas Schwab <schwab@suse.de> * sunrpc/svc.c (svc_getreq_poll): Fix argument of xprt_unregister.
Diffstat (limited to 'elf/dl-load.c')
-rw-r--r-- | elf/dl-load.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/elf/dl-load.c b/elf/dl-load.c index 7640ec3289..2f3e878e7a 100644 --- a/elf/dl-load.c +++ b/elf/dl-load.c @@ -673,6 +673,11 @@ _dl_map_object_from_fd (const char *name, int fd, char *realname, /* This is the expected ELF header. */ #define ELF32_CLASS ELFCLASS32 #define ELF64_CLASS ELFCLASS64 +#ifndef VALID_ELF_HEADER +# define VALID_ELF_HEADER(hdr,exp,size) (memcmp (hdr, exp, size) == 0) +# define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_SYSV) +# define VALID_ELF_ABIVERSION(ver) (ver == 0) +#endif static const unsigned char expected[EI_PAD] = { [EI_MAG0] = ELFMAG0, @@ -739,7 +744,8 @@ _dl_map_object_from_fd (const char *name, int fd, char *realname, header = (void *) readbuf; /* Check the header for basic validity. */ - if (__builtin_expect (memcmp (header->e_ident, expected, EI_PAD), 0) != 0) + if (__builtin_expect (VALID_ELF_HEADER (header->e_ident, expected, EI_PAD), + 0) != 0) { /* Something is wrong. */ if (*(Elf32_Word *) &header->e_ident != @@ -764,10 +770,10 @@ _dl_map_object_from_fd (const char *name, int fd, char *realname, LOSE (0, "ELF file version ident not " STRING(EV_CURRENT)); /* XXX We should be able so set system specific versions which are allowed here. */ - if (header->e_ident[EI_OSABI] != ELFOSABI_SYSV) - LOSE (0, "ELF file OS ABI not " STRING(ELFOSABI_SYSV)); - if (header->e_ident[EI_ABIVERSION] != 0) - LOSE (0, "ELF file ABI version not 0"); + if (!VALID_ELF_OSABI (header->e_ident[EI_OSABI])) + LOSE (0, "ELF file OS ABI invalid."); + if (!VALID_ELF_ABIVERSION (header->e_ident[EI_ABIVERSION])) + LOSE (0, "ELF file ABI version invalid."); LOSE (0, "internal error"); } |