]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix aux cache handling in ldconfig with chroot.
authorUlrich Drepper <drepper@redhat.com>
Mon, 5 Apr 2010 18:26:43 +0000 (11:26 -0700)
committerUlrich Drepper <drepper@redhat.com>
Mon, 5 Apr 2010 18:26:43 +0000 (11:26 -0700)
ChangeLog
elf/ldconfig.c

index 26b95e33826a3f3feacd2aac718809d14487821f..866ec65f976affc0554be4acec953fc88bb45f34 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-04-05  Ulrich Drepper  <drepper@redhat.com>
+
+       [BZ #11149]
+       * elf/ldconfig.c (main): Respect chroot setting when looking for
+       the aux cache.
+
 2010-04-04  Ulrich Drepper  <drepper@redhat.com>
 
        [BZ #11043]
index efa67253f5f01975f994f62a822644301ecf7cb6..b9f1cc2d1bc3c0423526dd669513cad53008a89a 100644 (file)
@@ -1305,11 +1305,9 @@ main (int argc, char **argv)
                                  p ? (*p = '\0', cache_file) : "/");
 
       if (canon == NULL)
-       {
-         error (EXIT_FAILURE, errno,
-                _("Can't open cache file directory %s\n"),
-                p ? cache_file : "/");
-       }
+       error (EXIT_FAILURE, errno,
+              _("Can't open cache file directory %s\n"),
+              p ? cache_file : "/");
 
       if (p)
        ++p;
@@ -1346,8 +1344,17 @@ main (int argc, char **argv)
        add_system_dir (LIBDIR);
     }
 
+  char *aux_cache_file = _PATH_LDCONFIG_AUX_CACHE;
+  if (opt_chroot)
+    {
+      aux_cache_file = chroot_canon (opt_chroot, aux_cache_file);
+      if (aux_cache_file == NULL)
+       error (EXIT_FAILURE, errno, _("Can't open cache file %s\n"),
+              _PATH_LDCONFIG_AUX_CACHE);
+    }
+
   if (! opt_ignore_aux_cache)
-    load_aux_cache (_PATH_LDCONFIG_AUX_CACHE);
+    load_aux_cache (aux_cache_file);
   else
     init_aux_cache ();
 
@@ -1356,7 +1363,7 @@ main (int argc, char **argv)
   if (opt_build_cache)
     {
       save_cache (cache_file);
-      save_aux_cache (_PATH_LDCONFIG_AUX_CACHE);
+      save_aux_cache (aux_cache_file);
     }
 
   return 0;