From: Michael Tremer Date: Sat, 28 Mar 2015 12:17:57 +0000 (+0100) Subject: Escape any non-printable ascii characters X-Git-Tag: v2.1.12~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4468fb2eb49e21d2350f6619584e6816f5159d29;p=oddments%2Ffireinfo.git Escape any non-printable ascii characters http://forum.ipfire.org/viewtopic.php?f=5&t=12970 --- diff --git a/src/fireinfo/system.py b/src/fireinfo/system.py index 9d78728..4148c66 100644 --- a/src/fireinfo/system.py +++ b/src/fireinfo/system.py @@ -325,6 +325,16 @@ class System(object): return v, m + @staticmethod + def escape_string(s): + """ + Will remove all non-printable characters from the given string + """ + if s is None: + return + + return filter(lambda x: x in string.printable, s) + @property def vendor(self): """ @@ -334,14 +344,14 @@ class System(object): for file in ("sys_vendor", "board_vendor", "chassis_vendor",): ret = read_from_file(os.path.join(SYS_CLASS_DMI, file)) if ret: - return ret + return self.escape_string(ret) if os.path.exists("/proc/device-tree"): ret = self.__cpuinfo.get("Hardware", None) else: ret, m = self.vendor_model_tuple() - return ret + return self.escape_string(ret) @property def model(self): @@ -352,7 +362,7 @@ class System(object): for file in ("product_name", "board_model", "chassis_model",): ret = read_from_file(os.path.join(SYS_CLASS_DMI, file)) if ret: - return ret + return self.escape_string(ret) # Read device-tree model if available ret = read_from_file("/proc/device-tree/model") @@ -364,7 +374,7 @@ class System(object): if not ret: v, ret = self.vendor_model_tuple() - return ret + return self.escape_string(ret) @property def memory(self):