summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCameron Thomas <cameron@puppetlabs.com>2011-07-22 14:31:59 -0700
committerCameron Thomas <cameron@puppetlabs.com>2011-07-22 14:31:59 -0700
commitca2f159caed691936bd9e87b59ccddc764066aa2 (patch)
tree8bd10ed0a90dcfebd4e1511b3743bb6d422b0449
parentb1526216d1e47726bae78a884a0db2666101e34a (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>
-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)