diff options
author | Andreas Schwab <schwab@redhat.com> | 2011-05-03 13:44:25 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-05-03 13:44:25 -0400 |
commit | 00ee369c1cbdcc4ca4a009e9223799951c6c8f04 (patch) | |
tree | 827fba77a9dfe310a2e0bbabebd7faf1078cd39f /elf | |
parent | 1bfbe0d335d3fc44a492648b974a0db19975f6d8 (diff) | |
download | glibc-00ee369c1cbdcc4ca4a009e9223799951c6c8f04.tar.gz glibc-00ee369c1cbdcc4ca4a009e9223799951c6c8f04.tar.xz glibc-00ee369c1cbdcc4ca4a009e9223799951c6c8f04.zip |
ldconfig: don't crash on empty path in config file
Diffstat (limited to 'elf')
-rw-r--r-- | elf/ldconfig.c | 15 |
1 files changed, 9 insertions, 6 deletions
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) |