guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/03: pack: fakechroot: Honor $LD_LIBRARY_PATH.


From: guix-commits
Subject: 03/03: pack: fakechroot: Honor $LD_LIBRARY_PATH.
Date: Thu, 27 Aug 2020 14:11:38 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 28dce8f02db38a41e59ecdf3786baa6f732636ff
Author: Ludovic Courtès <ludovic.courtes@inria.fr>
AuthorDate: Thu Aug 27 15:08:05 2020 +0200

    pack: fakechroot: Honor $LD_LIBRARY_PATH.
    
    Until now, when using the "fakechroot" engine, $LD_LIBRARY_PATH would
    always be ignored.  However, it's useful in some cases to allow users to
    specify LD_LIBRARY_PATH, so honor it.
    
    * gnu/packages/aux-files/run-in-namespace.c (concat_paths): New function.
    (exec_with_loader): Concatenante $LD_LIBRARY_PATH to the relocated
    AUDIT_LIBRARY_PATH.
---
 gnu/packages/aux-files/run-in-namespace.c | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/aux-files/run-in-namespace.c 
b/gnu/packages/aux-files/run-in-namespace.c
index 436c0b6..52a16a5 100644
--- a/gnu/packages/aux-files/run-in-namespace.c
+++ b/gnu/packages/aux-files/run-in-namespace.c
@@ -405,6 +405,23 @@ relocated_search_path (const char *path[], const char 
*store)
   return new_path;
 }
 
+/* Concatenate PATH1 and PATH2 with a colon in between.  The result is
+   potentially malloc'd.  */
+static char *
+concat_paths (const char *path1, const char *path2)
+{
+  if (path1[0] == '\0')
+    return (char *) path2;
+  else
+    {
+      char *result = xmalloc (strlen (path1) + strlen (path2) + 2);
+      strcpy (result, path1);
+      strcat (result, ":");
+      strcat (result, path2);
+      return result;
+    }
+}
+
 /* Execute the wrapped program by invoking the loader (ld.so) directly,
    passing it the audit module and preloading libfakechroot.so.  */
 static void
@@ -421,9 +438,12 @@ exec_with_loader (const char *store, int argc, char 
*argv[])
   loader_argv[2] = concat (store,
                           LOADER_AUDIT_MODULE + sizeof original_store);
 
-  /* The audit module depends on libc.so and libgcc_s.so.  */
+  /* The audit module depends on libc.so and libgcc_s.so so honor
+     AUDIT_LIBRARY_PATH.  Additionally, honor $LD_LIBRARY_PATH if set.  */
   loader_argv[3] = "--library-path";
-  loader_argv[4] = relocated_search_path (audit_library_path, store);
+  loader_argv[4] =
+    concat_paths (getenv ("LD_LIBRARY_PATH") ?: "",
+                 relocated_search_path (audit_library_path, store));
 
   loader_argv[5] = "--preload";
   loader_argv[6] = concat (store,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]