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/07/07 10:49:30 UTC
svn commit: r1862684 -
/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HashBL.pm
Author: hege
Date: Sun Jul 7 10:49:29 2019
New Revision: 1862684
URL: http://svn.apache.org/viewvc?rev=1862684&view=rev
Log:
Use compile_regexp, fix max=x truncating, logging cleanup
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HashBL.pm
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HashBL.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HashBL.pm?rev=1862684&r1=1862683&r2=1862684&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HashBL.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HashBL.pm Sun Jul 7 10:49:29 2019
@@ -117,13 +117,13 @@ package Mail::SpamAssassin::Plugin::Hash
use strict;
use warnings;
-my $VERSION = 0.100;
+my $VERSION = 0.101;
use Digest::MD5 qw(md5_hex);
use Digest::SHA qw(sha1_hex sha256_hex);
use Mail::SpamAssassin::Plugin;
-use Mail::SpamAssassin::Util;
+use Mail::SpamAssassin::Util qw(compile_regexp);
our @ISA = qw(Mail::SpamAssassin::Plugin);
@@ -377,13 +377,17 @@ sub check_hashbl_emails {
my $rulename = $pms->get_current_eval_rule_name();
if (!defined $list) {
- Mail::SpamAssassin::Logger::info("HashBL: $rulename blocklist argument missing");
+ warn "HashBL: $rulename blocklist argument missing\n";
return 0;
}
- if ($subtest && !eval { $subtest = qr/$subtest/ }) {
- Mail::SpamAssassin::Logger::info("HashBL: $rulename invalid subtest regex: $@");
- return 0;
+ if ($subtest) {
+ my ($rec, $err) = compile_regexp($subtest, 0);
+ if (!$rec) {
+ warn "HashBL: $rulename invalid subtest regex: $@\n";
+ return 0;
+ }
+ $subtest = $rec;
}
# Defaults
@@ -429,7 +433,7 @@ sub check_hashbl_emails {
# Truncate list
my $max = $opts =~ /\bmax=(\d+)\b/ ? $1 : 10;
- $#filtered_emails = $max if scalar @filtered_emails > $max;
+ $#filtered_emails = $max-1 if scalar @filtered_emails > $max;
foreach my $email (@filtered_emails) {
$self->_submit_query($pms, $rulename, $email, $list, $opts, $subtest);
@@ -449,13 +453,17 @@ sub check_hashbl_uris {
my $rulename = $pms->get_current_eval_rule_name();
if (!defined $list) {
- Mail::SpamAssassin::Logger::info("HashBL: $rulename blocklist argument missing");
+ warn "HashBL: $rulename blocklist argument missing\n";
return 0;
}
- if ($subtest && !eval { $subtest = qr/$subtest/ }) {
- Mail::SpamAssassin::Logger::info("HashBL: $rulename invalid subtest regex: $@");
- return 0;
+ if ($subtest) {
+ my ($rec, $err) = compile_regexp($subtest, 0);
+ if (!$rec) {
+ warn "HashBL: $rulename invalid subtest regex: $@\n";
+ return 0;
+ }
+ $subtest = $rec;
}
# Defaults
@@ -464,8 +472,8 @@ sub check_hashbl_uris {
# Filter list
my $keep_case = $opts =~ /\bcase\b/i;
- if($opts =~ /.*raw.*/) {
- Mail::SpamAssassin::Logger::info("HashBL: raw option invalid");
+ if ($opts =~ /raw/) {
+ warn "HashBL: $rulename raw option invalid\n";
return 0;
}
@@ -492,13 +500,13 @@ sub check_hashbl_uris {
# Truncate list
my $max = $opts =~ /\bmax=(\d+)\b/ ? $1 : 10;
- $#filtered_uris = $max if scalar @filtered_uris > $max;
+ $#filtered_uris = $max-1 if scalar @filtered_uris > $max;
foreach my $furi (@filtered_uris) {
$self->_submit_query($pms, $rulename, $furi, $list, $opts, $subtest);
}
- return 0;
+ return 0;
}
sub check_hashbl_bodyre {
@@ -509,19 +517,29 @@ sub check_hashbl_bodyre {
my $rulename = $pms->get_current_eval_rule_name();
if (!defined $list) {
- Mail::SpamAssassin::Logger::info("HashBL: $rulename blocklist argument missing");
+ warn "HashBL: $rulename blocklist argument missing\n";
return 0;
}
- if (!$re || !eval { $re = qr/$re/ }) {
- Mail::SpamAssassin::Logger::info("HashBL: $rulename invalid body regex: $@");
+ if (!$re) {
+ warn "HashBL: $rulename missing body regex\n";
return 0;
}
-
- if ($subtest && !eval { $subtest = qr/$subtest/ }) {
- Mail::SpamAssassin::Logger::info("HashBL: $rulename invalid subtext regex: $@");
+ my ($rec, $err) = compile_regexp($re, 0);
+ if (!$rec) {
+ warn "HashBL: $rulename invalid body regex: $@\n";
return 0;
}
+ $re = $rec;
+
+ if ($subtest) {
+ my ($rec, $err) = compile_regexp($subtest, 0);
+ if (!$rec) {
+ warn "HashBL: $rulename invalid subtest regex: $@\n";
+ return 0;
+ }
+ $subtest = $rec;
+ }
# Defaults
$opts = 'sha1/max=10/shuffle' if !$opts;
@@ -567,7 +585,7 @@ sub check_hashbl_bodyre {
# Truncate list
my $max = $opts =~ /\bmax=(\d+)\b/ ? $1 : 10;
- $#matches = $max if scalar @matches > $max;
+ $#matches = $max-1 if scalar @matches > $max;
foreach my $match (@matches) {
$self->_submit_query($pms, $rulename, $match, $list, $opts, $subtest);