From f3daf5fad74628ed605746a748a026d99bf881ed Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Wed, 21 Jun 2017 07:03:15 -0700 Subject: [PATCH] Rebuild command and arguments before exec on Windows Flat command can cause issues with arguments. Creating new string instances from arguments forces common encoding of all strings used for exec. Fixes #8690 --- lib/vagrant/util/safe_exec.rb | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/vagrant/util/safe_exec.rb b/lib/vagrant/util/safe_exec.rb index f7f5bdb81..b494fc00a 100644 --- a/lib/vagrant/util/safe_exec.rb +++ b/lib/vagrant/util/safe_exec.rb @@ -41,14 +41,11 @@ module Vagrant end else if Vagrant::Util::Platform.windows? - @@logger.debug("Converting command and arguments to single string for exec") - @@logger.debug("Command: `#{command.inspect}` Args: `#{args.inspect}`") - full_command = "#{command} #{args.join(" ")}" - @@logger.debug("Converted command: #{full_command}") - Kernel.exec(full_command) - else - Kernel.exec(command, *args) + # Re-generate strings to ensure common encoding + command = "#{command}".force_encoding("UTF-8") + args = args.map{|arg| "#{arg}".force_encoding("UTF-8") } end + Kernel.exec(command, *args) end rescue *rescue_from # We retried already, raise the issue and be done