diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | elf/ldconfig.c | 15 |
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) |