aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2011-05-03 13:44:25 -0400
committerPetr Baudis <pasky@ucw.cz>2011-05-27 00:49:23 +0200
commit426cfd73719462d0fedd72d78169218509dae574 (patch)
treebadb8532a4ef136f0511d329ac19cb1ac2916f96
parent7b1d92c6439bfeea8b72631a1f3849109a38c909 (diff)
downloadglibc-426cfd73719462d0fedd72d78169218509dae574.zip
glibc-426cfd73719462d0fedd72d78169218509dae574.tar.gz
glibc-426cfd73719462d0fedd72d78169218509dae574.tar.bz2
ldconfig: don't crash on empty path in config file
(cherry picked from commit 00ee369c1cbdcc4ca4a009e9223799951c6c8f04)
-rw-r--r--ChangeLog4
-rw-r--r--elf/ldconfig.c15
2 files changed, 13 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 853f82d..e3875af 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-30 Bruno Haible <bruno@clisp.org>
[BZ #12717]
diff --git a/elf/ldconfig.c b/elf/ldconfig.c
index 6ba8e07..c11b1f5 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)