diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-07-22 21:35:06 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-07-22 21:35:06 +0000 |
commit | f00b19417df4f29fc3264f772c46305f60181cd6 (patch) | |
tree | 25bd2b5ad5b969bb3d27f5784e6bd87f4c6355d5 | |
parent | 873a1928deb9e0eca0c2c2b5d03efce5585633aa (diff) | |
download | glibc-f00b19417df4f29fc3264f772c46305f60181cd6.tar.gz glibc-f00b19417df4f29fc3264f772c46305f60181cd6.tar.xz glibc-f00b19417df4f29fc3264f772c46305f60181cd6.zip |
(process_file): Avoid possible overflow in assignment.
-rw-r--r-- | elf/readlib.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/elf/readlib.c b/elf/readlib.c index da0f08cc0b..a1fec94589 100644 --- a/elf/readlib.c +++ b/elf/readlib.c @@ -23,17 +23,16 @@ development version. Besides the simplification, it has also been modified to read some other file formats. */ - +#include <a.out.h> #include <elf.h> #include <error.h> -#include <link.h> #include <libintl.h> +#include <link.h> #include <stdio.h> #include <string.h> #include <unistd.h> -#include <a.out.h> - #include <sys/mman.h> +#include <sys/param.h> #include <sys/stat.h> #include <gnu/lib-names.h> @@ -147,12 +146,10 @@ process_file (const char *real_file_name, const char *file_name, elf_header = (ElfW(Ehdr) *) file_contents; if (memcmp (elf_header->e_ident, ELFMAG, SELFMAG) != 0) { - /* The file is neither ELF nor aout. Check if it's a linker script, - like libc.so - otherwise complain. */ - int len = statbuf.st_size; - /* Only search the beginning of the file. */ - if (len > 512) - len = 512; + /* The file is neither ELF nor aout. Check if it's a linker + script, like libc.so - otherwise complain. Only search the + beginning of the file. */ + size_t len = MIN (statbuf.st_size, 512); if (memmem (file_contents, len, "GROUP", 5) == NULL && memmem (file_contents, len, "GNU ld script", 13) == NULL) error (0, 0, _("%s is not an ELF file - it has the wrong magic bytes at the start.\n"), |