diff options
-rwxr-xr-x | scripts/nix-build.in | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/scripts/nix-build.in b/scripts/nix-build.in index c7c516212801..19de6feb6080 100755 --- a/scripts/nix-build.in +++ b/scripts/nix-build.in @@ -195,8 +195,12 @@ for (my $n = 0; $n < scalar @ARGV; $n++) { # or (undocumented) argv[0] does not contain "perl". Exploit # the latter by doing "exec -a". my $execArgs = $interpreter =~ /perl/ ? "-a PERL" : ""; - # FIXME: escape arguments. - $envCommand = "exec $execArgs $interpreter $script @savedArgs"; + sub shellEscape { + my $s = $_; + $s =~ s/'/'\\''/g; + return "'" . $s . "'"; + } + $envCommand = "exec $execArgs $interpreter $script ${\(join ' ', (map shellEscape, @savedArgs))}"; } elsif (substr($arg, 0, 1) eq "-") { |