about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--elf/readlib.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/elf/readlib.c b/elf/readlib.c
index efc2e10053..da0f08cc0b 100644
--- a/elf/readlib.c
+++ b/elf/readlib.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
 		  Jakub Jelinek <jakub@redhat.com>, 1999.
@@ -158,11 +158,12 @@ process_file (const char *real_file_name, const char *file_name,
 	error (0, 0, _("%s is not an ELF file - it has the wrong magic bytes at the start.\n"),
 	       file_name);
       ret = 1;
-      goto done;
     }
-
-  if (process_elf_file (file_name, lib, flag, osversion, soname,
-			file_contents, statbuf.st_size))
+  /* Libraries have to be shared object files.  */
+  else if (elf_header->e_type != ET_DYN)
+    ret = 1;
+  else if (process_elf_file (file_name, lib, flag, osversion, soname,
+			     file_contents, statbuf.st_size))
     ret = 1;
 
  done: