about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPetr Baudis <pasky@suse.cz>2010-11-16 03:35:47 +0100
committerPetr Baudis <pasky@suse.cz>2010-11-16 03:39:24 +0100
commitc8e6e9e783bc5018525e881f021333c3daa4b0f6 (patch)
tree678884f3828a12b2b3c3f41321c53a62583323f7
parentb321e863ac162595250446a3b107384dc7aecd89 (diff)
downloadglibc-c8e6e9e783bc5018525e881f021333c3daa4b0f6.tar.gz
glibc-c8e6e9e783bc5018525e881f021333c3daa4b0f6.tar.xz
glibc-c8e6e9e783bc5018525e881f021333c3daa4b0f6.zip
Allow aux_cache_file open()ing to fail silently even in the chroot mode.
The aux_cache fix of bug 11149 introduced a new bug - normally,
ldconfig -r never cares if the auxiliary cache is not available and
that is not a fatal problem, however this is not the case in case
of ldconfig -r when executed as non-root. In that case, ldconfig -r
fails hard unless var/cache/ldconfig/ exists within the chroot. This
patch fixes that.
-rw-r--r--ChangeLog6
-rw-r--r--elf/ldconfig.c12
2 files changed, 10 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 8f7372ba62..c7174be106 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-05-31  Petr Baudis  <pasky@suse.cz>
+
+	[BZ #11149]
+	* elf/ldconfig.c (main): Allow aux_cache_file open()ing to fail
+	silently even in the chroot mode.
+
 2010-08-19  Petr Baudis <pasky@suse.cz>
 
 	[BZ #11928]
diff --git a/elf/ldconfig.c b/elf/ldconfig.c
index b4af31e5b5..b82ca8e308 100644
--- a/elf/ldconfig.c
+++ b/elf/ldconfig.c
@@ -1359,14 +1359,9 @@ main (int argc, char **argv)
 
   const 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);
-    }
+    aux_cache_file = chroot_canon (opt_chroot, aux_cache_file);
 
-  if (! opt_ignore_aux_cache)
+  if (! opt_ignore_aux_cache && aux_cache_file)
     load_aux_cache (aux_cache_file);
   else
     init_aux_cache ();
@@ -1376,7 +1371,8 @@ main (int argc, char **argv)
   if (opt_build_cache)
     {
       save_cache (cache_file);
-      save_aux_cache (aux_cache_file);
+      if (aux_cache_file)
+        save_aux_cache (aux_cache_file);
     }
 
   return 0;