aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMariano Lopez <mariano.lopez@linux.intel.com>2015-09-28 12:49:47 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-10-01 07:43:33 +0100
commitcb936708402a559cf67217970ce5d3b5049e3ef0 (patch)
tree0aff0a6cf3410329a8aebe0521af28b1caa53264
parentba0f6ca79615579e53369b1614345fc27816307f (diff)
downloadopenembedded-core-contrib-cb936708402a559cf67217970ce5d3b5049e3ef0.tar.gz
qemurunner: Sanitize output from qemu and qemu pid
Currently the output from qemu could contain control or Unicode characters; having such characters in the log will cause an internal server error when sending the report to error reporting web. Control characters can be found in the command line used to run quemu too. This change sanitize the output from qemu and the command line used to run qemu, this way the logs doesn't contain control or Unicode characters and this will solve the issue of error reporting web and generate better logs. The only Unicode character found in the qemu output is the copyright symbol, it really doesn't interfer removing Unicode characters with debugging. [YOCTO #8225] (From OE-Core rev: 9f25f723828d6709aad581267ccc63d2ade1ff5c) Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index 5624977561..9c878bc707 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -13,6 +13,7 @@ import re
import socket
import select
import errno
+import string
import threading
from oeqa.utils.dump import HostDumper
@@ -61,6 +62,9 @@ class QemuRunner:
def log(self, msg):
if self.logfile:
+ # It is needed to sanitize the data received from qemu
+ # because is possible to have control characters or Unicode
+ msg = "".join(filter(lambda x:x in string.printable, msg))
with open(self.logfile, "a") as f:
f.write("%s" % msg)
@@ -170,6 +174,9 @@ class QemuRunner:
cmdline = ''
with open('/proc/%s/cmdline' % self.qemupid) as p:
cmdline = p.read()
+ # It is needed to sanitize the data received
+ # because is possible to have control characters
+ cmdline = "".join(filter(lambda x:x in string.printable, cmdline))
try:
ips = re.findall("((?:[0-9]{1,3}\.){3}[0-9]{1,3})", cmdline.split("ip=")[1])
if not ips or len(ips) != 3: