From 17e87510378f2729208a8262695f28e1efe5eb4c Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 1 May 2019 08:00:00 +0100 Subject: oeqa/ssh: Avoid unicode decode exceptions This code really needs to be rewritten to not split potential multibyte characters, for now work around it to avoid exceptions like: File "/home/pokybuild/yocto-worker/qa-extras2/build/meta/lib/oeqa/core/target/ssh.py", line 211, in run data = reader.read(1024, 4096) File "/usr/lib64/python3.6/codecs.py", line 503, in read newchars, decodedbytes = self.decode(data, self.errors) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in position 0: invalid start byte Signed-off-by: Richard Purdie --- meta/lib/oeqa/core/target/ssh.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'meta/lib/oeqa/core') diff --git a/meta/lib/oeqa/core/target/ssh.py b/meta/lib/oeqa/core/target/ssh.py index 8ff1f6c677..2adbb3000c 100644 --- a/meta/lib/oeqa/core/target/ssh.py +++ b/meta/lib/oeqa/core/target/ssh.py @@ -207,7 +207,7 @@ def SSHCall(command, logger, timeout=None, **opts): logger.debug('time: %s, endtime: %s' % (time.time(), endtime)) try: if select.select([process.stdout], [], [], 5)[0] != []: - reader = codecs.getreader('utf-8')(process.stdout) + reader = codecs.getreader('utf-8')(process.stdout, 'surrogatepass') data = reader.read(1024, 4096) if not data: process.stdout.close() @@ -234,7 +234,7 @@ def SSHCall(command, logger, timeout=None, **opts): output += lastline else: - output = process.communicate()[0].decode("utf-8", errors='replace') + output = process.communicate()[0].decode("utf-8", errors='surrogatepass') logger.debug('Data from SSH call: %s' % output.rstrip()) options = { -- cgit 1.2.3-korg