From 40932fc85440f9fd5952829913c327ad3bfee722 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 7 Aug 2009 08:21:56 +0000 Subject: Make spawn decode unicode in order to avoid a potential UnicodeEncodeError from os.execve(). svn path=/main/trunk/; revision=13944 --- pym/portage/process.py | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'pym/portage/process.py') diff --git a/pym/portage/process.py b/pym/portage/process.py index a88f5bf28..051a59f61 100644 --- a/pym/portage/process.py +++ b/pym/portage/process.py @@ -178,6 +178,17 @@ def spawn(mycommand, env={}, opt_name=None, fd_pipes=None, returnpid=False, if isinstance(mycommand, basestring): mycommand = mycommand.split() + # Avoid a potential UnicodeEncodeError from os.execve(). + env_bytes = {} + for k, v in env.iteritems(): + if isinstance(k, unicode): + k = k.encode('utf_8', 'replace') + if isinstance(v, unicode): + v = v.encode('utf_8', 'replace') + env_bytes[k] = v + env = env_bytes + del env_bytes + # If an absolute path to an executable file isn't given # search for it unless we've been told not to. binary = mycommand[0] -- cgit v1.2.3-1-g7c22