You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by mm...@apache.org on 2014/12/18 14:24:51 UTC

svn commit: r1646455 - /spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm

Author: mmartinec
Date: Thu Dec 18 13:24:51 2014
New Revision: 1646455

URL: http://svn.apache.org/r1646455
Log:
fix SA::Util::qp_decode for compliance with RFC 2045 (trailing whitespace must be deleted before decoding), add comments

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm?rev=1646455&r1=1646454&r2=1646455&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Util.pm Thu Dec 18 13:24:51 2014
@@ -727,8 +727,16 @@ sub base64_decode {
 sub qp_decode {
   local $_ = shift;
 
-  s/\=\r?\n//gs;
-  s/\=([0-9a-fA-F]{2})/chr(hex($1))/ge;
+  # RFC 2045: when decoding a Quoted-Printable body, any trailing
+  # white space on a line must be deleted
+  s/[ \t]+(?=\r?\n)//gs;
+
+  # RFC 2045 explicitly prohibits lowercase characters a-f in QP encoding
+  # do we really want to allow them???
+  s/=([0-9a-fA-F]{2})/chr(hex($1))/ge;
+
+  s/=\r?\n//gs;  # soft line breaks
+
   return $_;
 }