patman: Don't convert input data to unicode
authorSimon Glass <sjg@chromium.org>
Mon, 29 May 2017 21:31:24 +0000 (15:31 -0600)
committerSimon Glass <sjg@chromium.org>
Fri, 9 Jun 2017 02:21:59 +0000 (20:21 -0600)
The communication filter reads data in blocks and converts each block to
unicode (if necessary) one at a time. In the unlikely event that a unicode
character in the input spans a block this will not work. We get an error
like:

UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1022-1023:
   unexpected end of data

There is no need to change the input to unicode, so the easiest fix is to
drop this feature.

Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
tools/patman/cros_subprocess.py

index 7c760143407b9fe36667312db1ea73f11059073c..ebd4300dfd5728d6f5ff52b360d8d8d5be629687 100644 (file)
@@ -190,8 +190,6 @@ class Popen(subprocess.Popen):
                 # We will get an error on read if the pty is closed
                 try:
                     data = os.read(self.stdout.fileno(), 1024)
-                    if isinstance(data, bytes):
-                        data = data.decode('utf-8')
                 except OSError:
                     pass
                 if data == "":
@@ -207,8 +205,6 @@ class Popen(subprocess.Popen):
                 # We will get an error on read if the pty is closed
                 try:
                     data = os.read(self.stderr.fileno(), 1024)
-                    if isinstance(data, bytes):
-                        data = data.decode('utf-8')
                 except OSError:
                     pass
                 if data == "":