diff --git a/dangerzone/conversion/doc_to_pixels.py b/dangerzone/conversion/doc_to_pixels.py index 236564d..38f1615 100644 --- a/dangerzone/conversion/doc_to_pixels.py +++ b/dangerzone/conversion/doc_to_pixels.py @@ -349,16 +349,22 @@ class DocumentToPixels(DangerzoneConverter): timeout=timeout, ) - self.update_progress("Converted document to pixels") - - # Move converted files into /tmp/dangerzone - for filename in ( + final_files = ( glob.glob("/tmp/page-*.rgb") + glob.glob("/tmp/page-*.width") + glob.glob("/tmp/page-*.height") - ): + ) + + # XXX: Sanity check to avoid situations like #560. + if not running_on_qubes() and len(final_files) != 3 * num_pages: + raise errors.PageCountMismatch() + + # Move converted files into /tmp/dangerzone + for filename in final_files: shutil.move(filename, "/tmp/dangerzone") + self.update_progress("Converted document to pixels") + async def install_libreoffice_ext(self, libreoffice_ext: str) -> None: self.update_progress(f"Installing LibreOffice extension '{libreoffice_ext}'") unzip_args = [ diff --git a/dangerzone/conversion/errors.py b/dangerzone/conversion/errors.py index 971f2da..8c3ed9d 100644 --- a/dangerzone/conversion/errors.py +++ b/dangerzone/conversion/errors.py @@ -82,6 +82,13 @@ class MaxPageHeightException(PagesException): error_message = f"A page exceeded the maximum height." +class PageCountMismatch(PagesException): + error_code = ERROR_SHIFT + 46 + error_message = ( + "The final document does not have the same page count as the original one" + ) + + class PDFtoPPMException(ConversionException): error_code = ERROR_SHIFT + 50 error_message = "Error converting PDF to Pixels (pdftoppm)"