about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2011-02-25 16:51:24 -0500
committerRyan S. Arnold <rsa@us.ibm.com>2011-05-03 17:15:35 -0500
commit1e2e988b3d31acfb9cdb0c56684a2bb6a7c709fa (patch)
treef6f8fb973f20c5a5ef1bcf2ab5d3907fe5293de4
parent57c8c3969204c998ee8dc3bb172bc6423646b209 (diff)
downloadglibc-1e2e988b3d31acfb9cdb0c56684a2bb6a7c709fa.tar.gz
glibc-1e2e988b3d31acfb9cdb0c56684a2bb6a7c709fa.tar.xz
glibc-1e2e988b3d31acfb9cdb0c56684a2bb6a7c709fa.zip
Don't crash when dependencies are missing
(Cherry picked from commit f2092faf2b6bd491a1891d5d5e393a8bf85d01d7)
-rw-r--r--ChangeLog6
-rw-r--r--elf/dl-deps.c8
2 files changed, 10 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index bf85164756..cbc68c1ea2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-02-17  Andreas Schwab  <schwab@redhat.com>
+
+	[BZ #12454]
+	* elf/dl-deps.c (_dl_map_object_deps): Signal error early when
+	dependencies are missing.
+
 2010-09-28  Andreas Schwab  <schwab@redhat.com>
 	    Ulrich Drepper  <drepper@gmail.com>
 
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
index 440fb563da..5288353d8f 100644
--- a/elf/dl-deps.c
+++ b/elf/dl-deps.c
@@ -491,6 +491,10 @@ _dl_map_object_deps (struct link_map *map,
   if (errno == 0 && errno_saved != 0)
     __set_errno (errno_saved);
 
+  if (errno_reason)
+    _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname,
+		      NULL, errstring);
+
   struct link_map **old_l_initfini = NULL;
   if (map->l_initfini != NULL && map->l_type == lt_loaded)
     {
@@ -683,8 +687,4 @@ Filters not supported with LD_TRACE_PRELINKING"));
     }
   if (old_l_initfini != NULL)
     _dl_scope_free (old_l_initfini);
-
-  if (errno_reason)
-    _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname,
-		      NULL, errstring);
 }