Merge pull request #27215 from obsidiansystems/stdenv-harden

Harden stdenv in two misc ways

authored by John Ericson and committed by GitHub f5364122 21ef8d5c

+10 -5
+2 -1
pkgs/development/compilers/swift/patches/build-script-pax.patch
··· 1 1 --- swift/utils/build-script-impl 2017-01-23 12:47:20.401326309 -0600 2 2 +++ swift-pax/utils/build-script-impl 2017-01-23 13:24:10.339366996 -0600 3 - @@ -1823,6 +1823,16 @@ function set_lldb_xcodebuild_options() { 3 + @@ -1823,6 +1823,17 @@ function set_lldb_xcodebuild_options() { 4 4 fi 5 5 } 6 6 7 7 +## XXX: Taken from nixpkgs /pkgs/stdenv/generic/setup.sh 8 8 +isELF() { 9 9 + local fn="$1" 10 + + local fd 10 11 + local magic 11 12 + exec {fd}< "$fn" 12 13 + read -n 4 -u $fd magic
+8 -4
pkgs/stdenv/generic/setup.sh
··· 17 17 shift 18 18 local var="$hookName" 19 19 if [[ "$hookName" =~ Hook$ ]]; then var+=s; else var+=Hooks; fi 20 - eval "local -a dummy=(\"\${$var[@]}\")" 21 - for hook in "_callImplicitHook 0 $hookName" "${dummy[@]}"; do 20 + local -n var 21 + local hook 22 + for hook in "_callImplicitHook 0 $hookName" "${var[@]}"; do 22 23 _eval "$hook" "$@" 23 24 done 24 25 return 0 ··· 32 33 shift 33 34 local var="$hookName" 34 35 if [[ "$hookName" =~ Hook$ ]]; then var+=s; else var+=Hooks; fi 35 - eval "local -a dummy=(\"\${$var[@]}\")" 36 - for hook in "_callImplicitHook 1 $hookName" "${dummy[@]}"; do 36 + local -n var 37 + local hook 38 + for hook in "_callImplicitHook 1 $hookName" "${var[@]}"; do 37 39 if _eval "$hook" "$@"; then 38 40 return 0 39 41 fi ··· 192 194 # Return success if the specified file is an ELF object. 193 195 isELF() { 194 196 local fn="$1" 197 + local fd 195 198 local magic 196 199 exec {fd}< "$fn" 197 200 read -n 4 -u $fd magic ··· 203 206 # "#!"). 204 207 isScript() { 205 208 local fn="$1" 209 + local fd 206 210 local magic 207 211 if ! [ -x /bin/sh ]; then return 0; fi 208 212 exec {fd}< "$fn"