From f0a04d523c2f12a89aca6d51013933e022024008 Mon Sep 17 00:00:00 2001 From: George McCollister Date: Thu, 30 Mar 2017 09:44:24 -0500 Subject: [PATCH] patman: Convert byte arrays to strings os.read() returns a byte array in Python 3.5.2 and needs to be converted into a string. Check if the returned value is an instance of bytes and if it is decode it as a utf-8 string. If it is not a utf-8 encoded string the decoding may fail with an exception. Prior to this fix the comparisions check data == "" would fail when data was b'' and would cause an infinite memory leaking loop. joins would also fail with an exception below but due to the infinite loop it never made it that far. Signed-off-by: George McCollister Acked-by: Simon Glass --- tools/patman/cros_subprocess.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/patman/cros_subprocess.py b/tools/patman/cros_subprocess.py index ebd4300dfd..7c76014340 100644 --- a/tools/patman/cros_subprocess.py +++ b/tools/patman/cros_subprocess.py @@ -190,6 +190,8 @@ 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 == "": @@ -205,6 +207,8 @@ 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 == "": -- 2.39.5