From c05593bfaed03cd029bf6a25e38ea9b6ae6c02d7 Mon Sep 17 00:00:00 2001 From: Thomas Oettli Date: Fri, 12 Mar 2021 14:47:28 +0100 Subject: [PATCH] fix handling of illegal characters in header values --- pymodmilter/__init__.py | 4 ++-- pymodmilter/base.py | 7 ++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/pymodmilter/__init__.py b/pymodmilter/__init__.py index 42d68c2..a6f9128 100644 --- a/pymodmilter/__init__.py +++ b/pymodmilter/__init__.py @@ -279,8 +279,8 @@ class ModifyMilter(Milter.Base): def header(self, field, value): try: # remove surrogates - field = field.encode("ascii", errors="replace") - value = value.encode("ascii", errors="replace") + field = field.encode("ascii", errors="surrogateescape") + value = value.encode("ascii", errors="surrogateescape") self._fp.feed(field + b": " + value + b"\r\n") except Exception as e: diff --git a/pymodmilter/base.py b/pymodmilter/base.py index d099967..4eb91ae 100644 --- a/pymodmilter/base.py +++ b/pymodmilter/base.py @@ -136,8 +136,5 @@ class MilterMessage(MIMEPart): def replace_illegal_chars(string): - """Replace illegal characters in header values.""" - return string.replace( - "\x00", "").replace( - "\r", "").replace( - "\n", "") + """Remove illegal characters from header values.""" + return "".join(string.replace("\x00", "").splitlines())