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/09/30 14:30:58 UTC
svn commit: r1628419 -
/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HeaderEval.pm
Author: mmartinec
Date: Tue Sep 30 12:30:58 2014
New Revision: 1628419
URL: http://svn.apache.org/r1628419
Log:
Plugin/HeaderEval: header field names are case-insensitive, (plus a tiny speedup)
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HeaderEval.pm
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HeaderEval.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HeaderEval.pm?rev=1628419&r1=1628418&r2=1628419&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HeaderEval.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HeaderEval.pm Tue Sep 30 12:30:58 2014
@@ -267,26 +267,27 @@ sub check_illegal_chars {
$header .= ":raw" unless ($header eq "ALL" || $header =~ /:raw$/);
my $str = $pms->get($header);
- return 0 unless $str ne '';
+ return 0 if !defined $str || $str eq '';
# avoid overlap between tests
if ($header eq "ALL") {
# fix continuation lines, then remove Subject and From
$str =~ s/\n[ \t]+/ /gs;
- $str =~ s/^(?:Subject|From):.*$//gm;
+ $str =~ s/^(?:Subject|From):.*$//gmi;
}
# count illegal substrings (RFC 2045)
- my $illegal = () = ($str =~ /[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\xff]/g);
+ # (non-ASCII + C0 controls except TAB, NL, CR)
+ my $illegal = $str =~ tr/\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\xff//;
# minor exemptions for Subject
- if ($header eq "Subject:raw") {
+ if ($illegal > 0 && lc $header eq "subject:raw") {
# only exempt a single cent sign, pound sign, or registered sign
- my $exempt = () = ($str =~ /[\xa2\xa3\xae]/g);
+ my $exempt = $str =~ tr/\xa2\xa3\xae//;
$illegal-- if $exempt == 1;
}
- return 0 if (length($str) == 0);
+ return 0 if $str eq '';
return (($illegal / length($str)) >= $ratio && $illegal >= $count);
}