From a01f598e3792c3944ecbb8252786f5bf41e6801b Mon Sep 17 00:00:00 2001
From: "Stuart D. Gathman" <stuart@gathman.org>
Date: Tue, 20 Aug 2019 18:37:35 -0400
Subject: [PATCH] Test case for invalid utf8 bytes in header.

---
 test/utf8     |  6 ++++++
 testsample.py | 17 +++++++++++++++++
 2 files changed, 23 insertions(+)
 create mode 100644 test/utf8

diff --git a/test/utf8 b/test/utf8
new file mode 100644
index 0000000..77619cb
--- /dev/null
+++ b/test/utf8
@@ -0,0 +1,6 @@
+From the-concourse-on-high Sat Feb  2 13:01:43 2019
+Date: Sat, 02 Feb 2019 19:48:56 +0100
+To: stuart@[IPv6:fcd9:7f8a:e050:4b48:7fd6:7fa:5509:6e26]
+Subject: ����qq.com������
+
+Does you receive this email?
diff --git a/testsample.py b/testsample.py
index d6f0256..ce8ebb1 100644
--- a/testsample.py
+++ b/testsample.py
@@ -21,6 +21,23 @@ class BMSMilterTestCase(unittest.TestCase):
     self.zf.close()
     self.zf = None
 
+  def testHeader(self,fname='utf8'):
+    ctx = TestCtx()
+    Milter.factory = sample.sampleMilter
+    ctx._setsymval('{auth_authen}','batman')
+    ctx._setsymval('{auth_type}','batcomputer')
+    ctx._setsymval('j','mailhost')
+    rc = ctx._connect()
+    self.assertTrue(rc == Milter.CONTINUE)
+    with open('test/'+fname) as fp:
+      rc = ctx._feedFile(fp)
+    milter = ctx.getpriv()
+    self.assertFalse(ctx._bodyreplaced,"Message body not replaced")
+    fp = ctx._body
+    with open('test/'+fname+".tstout","wb") as ofp:
+      ofp.write(fp.getvalue())
+    ctx._close()
+
   def testCtx(self,fname='virus1'):
     ctx = TestCtx()
     Milter.factory = sample.sampleMilter
-- 
GitLab