about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2011-05-03 13:44:25 -0400
committerUlrich Drepper <drepper@gmail.com>2011-05-03 13:44:25 -0400
commit00ee369c1cbdcc4ca4a009e9223799951c6c8f04 (patch)
tree827fba77a9dfe310a2e0bbabebd7faf1078cd39f
parent1bfbe0d335d3fc44a492648b974a0db19975f6d8 (diff)
downloadglibc-00ee369c1cbdcc4ca4a009e9223799951c6c8f04.tar.gz
glibc-00ee369c1cbdcc4ca4a009e9223799951c6c8f04.tar.xz
glibc-00ee369c1cbdcc4ca4a009e9223799951c6c8f04.zip
ldconfig: don't crash on empty path in config file
-rw-r--r--ChangeLog4
-rw-r--r--elf/ldconfig.c15
2 files changed, 13 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index bd08c7d983..e90eaa9541 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-05-03  Andreas Schwab  <schwab@redhat.com>
+
+	* elf/ldconfig.c (add_dir): Don't crash on empty path.
+
 2011-04-28  Maciej Babinski  <mbabinski@google.com>
 
 	[BZ #12714]
diff --git a/elf/ldconfig.c b/elf/ldconfig.c
index 1b2eaa34d1..751b49bd43 100644
--- a/elf/ldconfig.c
+++ b/elf/ldconfig.c
@@ -384,14 +384,17 @@ add_dir (const char *line)
     }
 
   /* Canonify path: for now only remove leading and trailing
-     whitespace and the trailing slashes slashes.  */
-  i = strlen (entry->path) - 1;
+     whitespace and the trailing slashes.  */
+  i = strlen (entry->path);
 
-  while (isspace (entry->path[i]) && i > 0)
-    entry->path[i--] = '\0';
+  while (i > 0 && isspace (entry->path[i - 1]))
+    entry->path[--i] = '\0';
 
-  while (entry->path[i] == '/' && i > 0)
-    entry->path[i--] = '\0';
+  while (i > 0 && entry->path[i - 1] == '/')
+    entry->path[--i] = '\0';
+
+  if (i == 0)
+    return;
 
   char *path = entry->path;
   if (opt_chroot)