From f41cefde1d5d26b7e6a06f09b98cc3ab49cce8e9 Mon Sep 17 00:00:00 2001 From: deeplow Date: Fri, 23 Jun 2023 08:35:59 +0100 Subject: [PATCH] Add "armor" around conversion log Add GPG-styled "armor" around conversion logs -----CONVERSION LOG START----- Creator: Writer Producer: LibreOffice 6.4 [...] -----CONVERSION LOG END----- --- dangerzone/isolation_provider/base.py | 8 ++++++++ dangerzone/isolation_provider/container.py | 2 +- dangerzone/isolation_provider/qubes.py | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dangerzone/isolation_provider/base.py b/dangerzone/isolation_provider/base.py index 2fc8b31..7b9866b 100644 --- a/dangerzone/isolation_provider/base.py +++ b/dangerzone/isolation_provider/base.py @@ -84,6 +84,14 @@ class IsolationProvider(ABC): def get_max_parallel_conversions(self) -> int: pass + def sanitize_conversion_str(self, untrusted_conversion_str: str) -> str: + conversion_string = replace_control_chars(untrusted_conversion_str) + + # Add armor (gpg-style) + armor_start = "-----CONVERSION LOG START-----\n" + armor_end = "-----CONVERSION LOG END-----" + return armor_start + conversion_string + armor_end + # From global_common: diff --git a/dangerzone/isolation_provider/container.py b/dangerzone/isolation_provider/container.py index 6f44316..75a9355 100644 --- a/dangerzone/isolation_provider/container.py +++ b/dangerzone/isolation_provider/container.py @@ -295,7 +295,7 @@ class Container(IsolationProvider): with open(log_path, "r", encoding="ascii", errors="replace") as f: untrusted_log = f.read(MAX_CONVERSION_LOG_CHARS) log.info( - f"Conversion output (doc to pixels):\n{replace_control_chars(untrusted_log)}" + f"Conversion output (doc to pixels):\n{self.sanitize_conversion_str(untrusted_log)}" ) if ret != 0: diff --git a/dangerzone/isolation_provider/qubes.py b/dangerzone/isolation_provider/qubes.py index 167858c..8b56ae5 100644 --- a/dangerzone/isolation_provider/qubes.py +++ b/dangerzone/isolation_provider/qubes.py @@ -145,7 +145,7 @@ class Qubes(IsolationProvider): if getattr(sys, "dangerzone_dev", False): untrusted_log = read_debug_text(p) log.info( - f"Conversion output (doc to pixels):\n{replace_control_chars(untrusted_log)}" + f"Conversion output (doc to pixels)\n{self.sanitize_conversion_str(untrusted_log)}" ) # FIXME pass OCR stuff properly (see #455)