summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCameron Thomas <cameron@puppetlabs.com>2011-07-22 14:31:59 -0700
committerJacob Helwig <jacob@puppetlabs.com>2011-08-19 13:52:56 -0700
commitd9a693dc4431430fcfdc3ae15bee8b4a0985868f (patch)
tree597f9e8a23d2c657d2e8443a0f43d58a1cfc57b7
parent49d1e9da1381c77a3873965bad36ba6b33316882 (diff)
Regexp escape substituted commands in Windows wrapper script
Because Windows file paths can (and do) contain '\', they can end up being interpreted as back-references on the substitution side of gsub. Since this is not at all what is intended, we use Regexp.escape to quote them. Reviewed-by: Jacob Helwig <jacob@puppetlabs.com> (cherry picked from commit ca2f159caed691936bd9e87b59ccddc764066aa2)
-rwxr-xr-xinstall.rb4
1 files changed, 3 insertions, 1 deletions
diff --git a/install.rb b/install.rb
index dcff82403..784ec8c9b 100755
--- a/install.rb
+++ b/install.rb
@@ -405,8 +405,10 @@ def install_binfile(from, op_file, target)
if not installed_wrapper
tmp_file2 = File.join(tmp_dir, '_tmp_wrapper')
cwn = File.join(Config::CONFIG['bindir'], op_file)
- cwv = CMD_WRAPPER.gsub('<ruby>', ruby.gsub(%r{/}) { "\\" }).gsub!('<command>', cwn.gsub(%r{/}) { "\\" } )
+ regex_safe_ruby = Regexp.escape(ruby.gsub(%r{/}) { "\\" })
+ regex_safe_cwn = Regexp.escape(cwn.gsub(%r{/}) { "\\" })
+ cwv = CMD_WRAPPER.gsub('<ruby>', regex_safe_ruby).gsub('<command>', regex_safe_cwn)
File.open(tmp_file2, "wb") { |cw| cw.puts cwv }
FileUtils.install(tmp_file2, File.join(target, "#{op_file}.bat"), :mode => 0755, :verbose => true)