diff options
author | Maxim Cournoyer <[email protected]> | 2020-09-14 16:17:19 -0400 |
---|---|---|
committer | Maxim Cournoyer <[email protected]> | 2020-09-14 16:17:19 -0400 |
commit | fa8fe90edb4efaf7d52f71516c4dcabb13d56418 (patch) | |
tree | 8d69a1132e95845d8a3d90f1fe4d0ef04039e2f4 /gnu/packages/aux-files/run-in-namespace.c | |
parent | 1bec03df9b60f156c657a64a323ef27f4ed14b44 (diff) | |
parent | d60739dff2e2f5eb74173b73a5fd207ef7cd110a (diff) |
Merge remote-tracking branch 'origin/master' into core-updates
Diffstat (limited to 'gnu/packages/aux-files/run-in-namespace.c')
-rw-r--r-- | gnu/packages/aux-files/run-in-namespace.c | 24 |
1 files 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 436c0b6286..52a16a5362 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, |