[BZ #151]
authorUlrich Drepper <drepper@redhat.com>
Sun, 26 Sep 2004 13:39:25 +0000 (13:39 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 26 Sep 2004 13:39:25 +0000 (13:39 +0000)
Update.
* elf/readlib.c (process_file): Before complaining about too-short
file, check that it potentially be an ELF file.  Also complain about
empty files.  [BZ #151].

ChangeLog
elf/readlib.c

index 13c49cd..e037596 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2004-09-26  Ulrich Drepper  <drepper@redhat.com>
 
+       * elf/readlib.c (process_file): Before complaining about too-short
+       file, check that it potentially be an ELF file.  Also complain about
+       empty files.  [BZ #151].
+
        * scripts/test-installation.pl: Fix ld.so recognition for new
        LD_TRACE_LOADED_OBJECTS output format.
        Patch by <jsberg04+computing.glibc@ftml.net>  [BZ #407].
index a1fec94..4fbc3e5 100644 (file)
@@ -105,7 +105,15 @@ process_file (const char *real_file_name, const char *file_name,
   if ((size_t) statbuf.st_size < sizeof (struct exec)
       || (size_t) statbuf.st_size < sizeof (ElfW(Ehdr)))
     {
-      error (0, 0, _("File %s is too small, not checked."), file_name);
+      if (statbuf.st_size == 0)
+       error (0, 0, _("File %s is empty, not checked."), file_name);
+      else
+       {
+         char buf[SELFMAG];
+         size_t n = MIN (statbuf.st_size, SELFMAG);
+         if (fread (buf, n, 1, file) == 1 && memcmp (buf, ELFMAG, n) == 0)
+           error (0, 0, _("File %s is too small, not checked."), file_name);
+       }
       fclose (file);
       return 1;
     }