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)
downloadpuppet-d9a693dc4431430fcfdc3ae15bee8b4a0985868f.tar.gz
puppet-d9a693dc4431430fcfdc3ae15bee8b4a0985868f.tar.xz
puppet-d9a693dc4431430fcfdc3ae15bee8b4a0985868f.zip
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)