From cc87ff27d108c9991f9ad93d682b06a40e7127bf Mon Sep 17 00:00:00 2001 From: Mark Sapiro Date: Mon, 2 Mar 2015 13:50:24 -0800 Subject: A LookupError in SpamDetect on a message with RFC 2047 encoded headers in an unknown character set is fixed. --- Mailman/Handlers/SpamDetect.py | 12 ++++++++++-- NEWS | 3 +++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Mailman/Handlers/SpamDetect.py b/Mailman/Handlers/SpamDetect.py index 119c5beb..d85cc6a6 100644 --- a/Mailman/Handlers/SpamDetect.py +++ b/Mailman/Handlers/SpamDetect.py @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2013 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2015 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -77,7 +77,15 @@ def getDecodedHeaders(msg, cset='utf-8'): for frag, cs in v: if not cs: cs = 'us-ascii' - uvalue += unicode(frag, cs, 'replace') + try: + uvalue += unicode(frag, cs, 'replace') + except LookupError: + # The encoding charset is unknown. At this point, frag + # has been QP or base64 decoded into a byte string whose + # charset we don't know how to handle. We will try to + # unicode it as iso-8859-1 which may result in a garbled + # mess, but we have to do something. + uvalue += unicode(frag, 'iso-8859-1', 'replace') headers += '%s: %s\n' % (h, uvalue.encode(cset, 'replace')) return headers diff --git a/NEWS b/NEWS index c2f25ac5..baf770b9 100755 --- a/NEWS +++ b/NEWS @@ -9,6 +9,9 @@ Here is a history of user visible changes to Mailman. Bug fixes and other patches + - A LookupError in SpamDetect on a message with RFC 2047 encoded headers + in an unknown character set is fixed. (LP: #1427389) + - Fixed a bug in CommandRunner that could process the second word of a body line as a command word and a case sensitivity in commands in Subject: with an Re: prefix. (LP: #1426829) -- cgit v1.2.3