diff options
author | Cameron Thomas <cameron@puppetlabs.com> | 2011-07-22 14:31:59 -0700 |
---|---|---|
committer | Cameron Thomas <cameron@puppetlabs.com> | 2011-07-22 14:31:59 -0700 |
commit | ca2f159caed691936bd9e87b59ccddc764066aa2 (patch) | |
tree | 8bd10ed0a90dcfebd4e1511b3743bb6d422b0449 /install.rb | |
parent | b1526216d1e47726bae78a884a0db2666101e34a (diff) | |
download | puppet-ca2f159caed691936bd9e87b59ccddc764066aa2.tar.gz puppet-ca2f159caed691936bd9e87b59ccddc764066aa2.tar.xz puppet-ca2f159caed691936bd9e87b59ccddc764066aa2.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>
Diffstat (limited to 'install.rb')
-rwxr-xr-x | install.rb | 4 |
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) |