Mailing List Archive

svn commit: r109828 - /spamassassin/trunk/lib/Mail/SpamAssassin.pm /spamassassin/trunk/lib/Mail/SpamAssassin/ArchiveIterator.pm /spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm /spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
Author: felicity
Date: Sat Dec 4 14:24:20 2004
New Revision: 109828

URL: http://svn.apache.org/viewcvs?view=rev&rev=109828
Log:
more dealing with malformed messages
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin.pm
spamassassin/trunk/lib/Mail/SpamAssassin/ArchiveIterator.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin.pm
Url: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin.pm?view=diff&rev=109828&p1=spamassassin/trunk/lib/Mail/SpamAssassin.pm&r1=109827&p2=spamassassin/trunk/lib/Mail/SpamAssassin.pm&r2=109828
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin.pm Sat Dec 4 14:24:20 2004
@@ -937,7 +937,7 @@
$hdrs =~ s/\r//gs;

# unfold SA added headers, but not X-Spam-Prev headers ...
- 1 while $hdrs =~ s/(\nX-Spam-(?!Prev).+?)\n[ \t]+/$1 /g;
+ 1 while $hdrs =~ s/(\nX-Spam-(?!Prev).+?)\n[ \t]+(\S.*\n)/$1 $2/g;

###########################################################################
# Backward Compatibilty, pre 3.0.x.

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/ArchiveIterator.pm
Url: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/ArchiveIterator.pm?view=diff&rev=109828&p1=spamassassin/trunk/lib/Mail/SpamAssassin/ArchiveIterator.pm&r1=109827&p2=spamassassin/trunk/lib/Mail/SpamAssassin/ArchiveIterator.pm&r2=109828
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/ArchiveIterator.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/ArchiveIterator.pm Sat Dec 4 14:24:20 2004
@@ -441,7 +441,7 @@
my @msg;
my $header = '';
while(<INPUT>) {
- if (!$header && /^$/) {
+ if (!$header && /^\s*$/) {
$header = join('', @msg);
}

@@ -479,7 +479,7 @@
return;
}

- if (!$header && /^$/) {
+ if (!$header && /^\s*$/) {
$header = join('', @msg);
}

@@ -513,7 +513,7 @@
return;
}

- if (!$header && /^$/) {
+ if (!$header && /^\s*$/) {
$header = join('', @msg);
}

@@ -875,7 +875,7 @@
my $header;
mail_open($mail) or return;
while (<INPUT>) {
- last if /^$/;
+ last if /^\s*$/;
$header .= $_;
}
close(INPUT);
@@ -920,7 +920,7 @@
my $header = $first; # remember first line
while (<INPUT>) {
if ($in_header) {
- if (/^$/) {
+ if (/^\s*$/) {
$in_header = 0;
}
else {
@@ -993,7 +993,7 @@
# gather up the headers...
my $header = '';
while (<INPUT>) {
- last if (/^$/);
+ last if (/^\s*$/);
$header .= $_;
}


Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
Url: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm?view=diff&rev=109828&p1=spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm&r1=109827&p2=spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm&r2=109828
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm Sat Dec 4 14:24:20 2004
@@ -562,7 +562,7 @@
}
$header = $_;
}
- elsif (/^$/) {
+ elsif (/^\s*$/) {
if ($header) {
my ( $key, $value ) = split ( /:\s*/, $header, 2 );
$part_msg->header( $key, $value );

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
Url: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm?view=diff&rev=109828&p1=spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm&r1=109827&p2=spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm&r2=109828
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm Sat Dec 4 14:24:20 2004
@@ -878,8 +878,19 @@

# put the pristine headers into an array
# skip the X-Spam- headers, but allow the X-Spam-Prev headers to remain.
+ # since there may be a missing header/body
#
- my(@pristine_headers) = grep(!/^X-Spam-(?!Prev-)/i, $self->{msg}->get_pristine_header() =~ /^([^:]+:[ \t]*(?:.*\n(?:\s+\S.*\n)*))/mig);
+ my @pristine_headers = split(/^/m, $self->{msg}->get_pristine_header());
+ for (my $line = 0; $line <= $#pristine_headers; $line++) {
+ next unless ($pristine_headers[$line] =~ /^X-Spam-(?!Prev-)/i);
+ splice @pristine_headers, $line, 1 while ($pristine_headers[$line] =~ /^(?:X-Spam-(?!Prev-)|\s+\S)/i);
+ $line--;
+ }
+ my $separator;
+ if ($pristine_headers[$#pristine_headers] =~ /^\s*$/) {
+ $separator = pop @pristine_headers;
+ }
+
my $addition = 'headers_ham';

if($self->{is_spam})
@@ -928,7 +939,6 @@
push(@pristine_headers, "X-Spam-$header: $line\n");
}

- my $separator = $self->{msg}->{missing_head_body_separator} ? '' : "\n";
return join('', @pristine_headers, $separator, $self->{msg}->get_pristine_body());
}