Catch more ascii encoding errors to improve resilience against bad data

(LP: #1844189)
This commit is contained in:
Scott Kitterman
2019-09-23 10:28:43 -04:00
parent 5800d25e0c
commit 68e61d419b
2 changed files with 14 additions and 3 deletions
+2
View File
@@ -15,6 +15,8 @@
conversion issues
- Fix variable initialization so mailformed mails missing body From do not
cause a traceback (LP: #1844161)
- Catch more ascii encoding errors to improve resilience against bad data
(LP: #1844189)
1.1.0 2019-04-12
- Add SubDomains option to enable signing for sub-domains (LP: #1811535)
+9
View File
@@ -149,7 +149,11 @@ class dkimMilter(Milter.Base):
elif lname == 'authentication-results':
self.arheaders.append(val)
if self.fp:
try:
self.fp.write(b"%s: %s\n" % (codecs.encode(name, 'ascii'), codecs.encode(val, 'ascii')))
except:
# Don't choke on header fields with non-ascii garbage in them.
pass
return Milter.CONTINUE
@Milter.noreply
@@ -305,8 +309,13 @@ class dkimMilter(Milter.Base):
self.header_i = codecs.decode(d.signature_fields.get(b'i'), 'ascii')
except TypeError as x:
self.header_i = None
try:
self.header_d = codecs.decode(d.signature_fields.get(b'd'), 'ascii')
self.header_a = codecs.decode(d.signature_fields.get(b'a'), 'ascii')
except Exception as x:
self.dkim_comment = str(x)
if milterconfig.get('Syslog'):
syslog.syslog("check_dkim: {0}".format(x))
if res:
if (milterconfig.get('Syslog') and
(milterconfig.get('SyslogSuccess') or