about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--elf/ldconfig.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/elf/ldconfig.c b/elf/ldconfig.c
index c41c81e3b8..6484e311aa 100644
--- a/elf/ldconfig.c
+++ b/elf/ldconfig.c
@@ -342,13 +342,15 @@ add_dir (const char *line)
       entry->flag = FLAG_ANY;
     }
 
-  /* Canonify path: for now only remove trailing slashes.  */
+  /* Canonify path: for now only remove leading and trailing
+     whitespace and the trailing slashes slashes.  */
   i = strlen (entry->path) - 1;
+
+  while (isspace (entry->path[i]) && i > 0)
+    entry->path[i--] = '\0';
+
   while (entry->path[i] == '/' && i > 0)
-    {
-      entry->path[i] = '\0';
-      --i;
-    }
+    entry->path[i--] = '\0';
 
   if (stat64 (entry->path, &stat_buf))
     {
@@ -963,12 +965,18 @@ parse_conf (const char *filename)
 	 make it terminating the line.  */
       *strchrnul (line, '#') = '\0';
 
+      /* Remove leading whitespace.  NUL is no whitespace character.  */
+      char *cp = line;
+      while (isspace (*cp))
+	++cp;
+
       /* If the line is blank it is ignored.  */
-      if (line[0] == '\0')
+      if (cp[0] == '\0')
 	continue;
 
-      add_dir (line);
-    } while (!feof (file));
+      add_dir (cp);
+    }
+  while (!feof_unlocked (file));
 
   /* Free buffer and close file.  */
   free (line);