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)