You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by he...@apache.org on 2019/08/30 07:49:31 UTC
svn commit: r1866128 - in /spamassassin:
branches/3.4/lib/Mail/SpamAssassin/Message.pm
trunk/lib/Mail/SpamAssassin/Message.pm trunk/rules/20_body_tests.cf
trunk/rules/50_scores.cf
Author: hege
Date: Fri Aug 30 07:49:30 2019
New Revision: 1866128
URL: http://svn.apache.org/viewvc?rev=1866128&view=rev
Log:
Bug 7747 - Limit checked mime parts
Modified:
spamassassin/branches/3.4/lib/Mail/SpamAssassin/Message.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
spamassassin/trunk/rules/20_body_tests.cf
spamassassin/trunk/rules/50_scores.cf
Modified: spamassassin/branches/3.4/lib/Mail/SpamAssassin/Message.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.4/lib/Mail/SpamAssassin/Message.pm?rev=1866128&r1=1866127&r2=1866128&view=diff
==============================================================================
--- spamassassin/branches/3.4/lib/Mail/SpamAssassin/Message.pm (original)
+++ spamassassin/branches/3.4/lib/Mail/SpamAssassin/Message.pm Fri Aug 30 07:49:30 2019
@@ -905,6 +905,7 @@ sub _parse_multipart {
my $header;
my $part_array;
my $found_end_boundary;
+ my $partcnt = 0;
my $line_count = @{$body};
foreach ( @{$body} ) {
@@ -977,6 +978,13 @@ sub _parse_multipart {
}
}
+ # Maximum parts to process
+ if (++$partcnt == 1000) {
+ dbg("message: mimepart limit exceeded, stopping parsing");
+ $self->{'mimepart_limit_exceeded'} = 1;
+ return;
+ }
+
# make sure we start with a new clean node
$in_body = 0;
$part_msg = Mail::SpamAssassin::Message::Node->new({ normalize=>$self->{normalize} });
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm?rev=1866128&r1=1866127&r2=1866128&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm Fri Aug 30 07:49:30 2019
@@ -975,6 +975,7 @@ sub _parse_multipart {
my $header;
my $part_array;
my $found_end_boundary;
+ my $partcnt = 0;
my $line_count = @{$body};
foreach ( @{$body} ) {
@@ -1059,6 +1060,13 @@ sub _parse_multipart {
}
}
+ # Maximum parts to process
+ if (++$partcnt == 1000) {
+ dbg("message: mimepart limit exceeded, stopping parsing");
+ $self->{'mimepart_limit_exceeded'} = 1;
+ return;
+ }
+
# make sure we start with a new clean node
$in_body = 0;
$part_msg = Mail::SpamAssassin::Message::Node->new({ normalize=>$self->{normalize} });
Modified: spamassassin/trunk/rules/20_body_tests.cf
URL: http://svn.apache.org/viewvc/spamassassin/trunk/rules/20_body_tests.cf?rev=1866128&r1=1866127&r2=1866128&view=diff
==============================================================================
--- spamassassin/trunk/rules/20_body_tests.cf (original)
+++ spamassassin/trunk/rules/20_body_tests.cf Fri Aug 30 07:49:30 2019
@@ -151,6 +151,9 @@ rawbody __MIME_CHARSET_FARAWAY eval:chec
body MIME_BAD_ISO_CHARSET eval:check_for_mime('mime_bad_iso_charset')
describe MIME_BAD_ISO_CHARSET MIME character set is an unknown ISO charset
+body MIMEPART_LIMIT_EXCEEDED eval:check_for_mime('mimepart_limit_exceeded')
+describe MIMEPART_LIMIT_EXCEEDED Message has too many MIME parts
+
endif
###########################################################################
Modified: spamassassin/trunk/rules/50_scores.cf
URL: http://svn.apache.org/viewvc/spamassassin/trunk/rules/50_scores.cf?rev=1866128&r1=1866127&r2=1866128&view=diff
==============================================================================
--- spamassassin/trunk/rules/50_scores.cf (original)
+++ spamassassin/trunk/rules/50_scores.cf Fri Aug 30 07:49:30 2019
@@ -616,6 +616,7 @@ score MISSING_MIME_HB_SEP 0.001 0.001 0.
score MULTIPART_ALT_NON_TEXT 0 # n=0 n=1 n=2 n=3
# </gen:mutable>
score MIME_QP_LONG_LINE 0.001
+score MIMEPART_LIMIT_EXCEEDED 0.001
# ok_locales
score CHARSET_FARAWAY 3.200