summaryrefslogtreecommitdiffstats
path: root/debian/patches/0002-fix-dos-casued-by-invalid-utf-8-char-as-input.patch
blob: f2448471b15f96bd87022d4ca0f22e7a8fa9a465 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
From e711074fe79be7ff257a41d15969b79edfaa7c8e Mon Sep 17 00:00:00 2001
From: Chris Sewell <chrisj_sewell@hotmail.com>
Date: Wed, 22 Feb 2023 06:19:13 +0100
Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20FIX:=20CLI=20crash=20on=20non-ut?=
 =?UTF-8?q?f8=20character?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bug-Debian: https://bugs.debian.org/1031764

---
 markdown_it/cli/parse.py | 2 +-
 tests/test_cli.py        | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/markdown_it/cli/parse.py b/markdown_it/cli/parse.py
index 2d74f55a..890d5de3 100644
--- a/markdown_it/cli/parse.py
+++ b/markdown_it/cli/parse.py
@@ -35,7 +35,7 @@ def convert_file(filename: str) -> None:
     Parse a Markdown file and dump the output to stdout.
     """
     try:
-        with open(filename, "r") as fin:
+        with open(filename, "r", encoding="utf8", errors="ignore") as fin:
             rendered = MarkdownIt().render(fin.read())
             print(rendered, end="")
     except OSError:
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 57d6b938..c38e24fd 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -20,6 +20,13 @@ def test_parse_fail():
     assert exc_info.value.code == 1
 
 
+def test_non_utf8():
+    with tempfile.TemporaryDirectory() as tempdir:
+        path = pathlib.Path(tempdir).joinpath("test.md")
+        path.write_bytes(b"\x80abc")
+        assert parse.main([str(path)]) == 0
+
+
 def test_print_heading():
     with patch("builtins.print") as patched:
         parse.print_heading()