treewide: Fix unsafe concatenation of $LD_LIBRARY_PATH
Naive concatenation of $LD_LIBRARY_PATH can result in an empty colon-delimited segment; this tells glibc to load libraries from the current directory, which is definitely wrong, and may be a security vulnerability if the current directory is untrusted. (See #67234, for example.) Fix this throughout the tree. Signed-off-by: Anders Kaseorg <andersk@mit.edu>
This commit is contained in:
committed by
Frederik Rietdijk
parent
2e5051e223
commit
3cd8ce3bce
@@ -29,7 +29,7 @@ in llvmPackages.stdenv.mkDerivation {
|
||||
# To handle the lack of 'local' RPATH; required, as they call one of
|
||||
# their built binaries requiring their libs, in the build process.
|
||||
preBuild = ''
|
||||
export LD_LIBRARY_PATH="$(pwd)/lib:$LD_LIBRARY_PATH"
|
||||
export LD_LIBRARY_PATH="$(pwd)/lib''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@@ -143,7 +143,7 @@ stdenv.mkDerivation ({
|
||||
'';
|
||||
|
||||
preCheck = ''
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib
|
||||
'';
|
||||
|
||||
postInstall = stdenv.lib.optionalString enableSharedLibraries ''
|
||||
|
||||
@@ -119,7 +119,7 @@ stdenv.mkDerivation ({
|
||||
'';
|
||||
|
||||
preCheck = ''
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
|
||||
@@ -120,7 +120,7 @@ stdenv.mkDerivation ({
|
||||
'';
|
||||
|
||||
preCheck = ''
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
|
||||
@@ -141,7 +141,7 @@ in stdenv.mkDerivation ({
|
||||
'';
|
||||
|
||||
preCheck = ''
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
|
||||
@@ -117,7 +117,7 @@ in stdenv.mkDerivation ({
|
||||
'';
|
||||
|
||||
preCheck = ''
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
|
||||
@@ -134,7 +134,7 @@ in stdenv.mkDerivation (rec {
|
||||
'';
|
||||
|
||||
preCheck = ''
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
|
||||
@@ -77,7 +77,7 @@ stdenv.mkDerivation rec {
|
||||
chmod u+x $(pwd)/../${usr_prefix}/bin/mlton
|
||||
|
||||
# So the builder runs the binary compiler with gmp.
|
||||
export LD_LIBRARY_PATH=${gmp.out}/lib:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH=${gmp.out}/lib''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH
|
||||
|
||||
'' + stdenv.lib.optionalString stdenv.isLinux ''
|
||||
# Patch ELF interpreter.
|
||||
|
||||
@@ -49,7 +49,7 @@ stdenv.mkDerivation rec {
|
||||
checkPhase = ''
|
||||
while IFS= read -r -d ''' dir
|
||||
do
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/$dir
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$(pwd)/$dir
|
||||
export LD_LIBRARY_PATH
|
||||
done < <(find . -type d -print0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user