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/01 12:28:39 UTC

svn commit: r1864149 - in /spamassassin: branches/3.4/lib/Mail/SpamAssassin/Conf.pm trunk/lib/Mail/SpamAssassin/Conf.pm

Author: hege
Date: Thu Aug  1 12:28:38 2019
New Revision: 1864149

URL: http://svn.apache.org/viewvc?rev=1864149&view=rev
Log:
Bug 5971 - M:SA:Conf::get_rule_value('rbl_evals') tries to coerce array to hash

Modified:
    spamassassin/branches/3.4/lib/Mail/SpamAssassin/Conf.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm

Modified: spamassassin/branches/3.4/lib/Mail/SpamAssassin/Conf.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.4/lib/Mail/SpamAssassin/Conf.pm?rev=1864149&r1=1864148&r2=1864149&view=diff
==============================================================================
--- spamassassin/branches/3.4/lib/Mail/SpamAssassin/Conf.pm (original)
+++ spamassassin/branches/3.4/lib/Mail/SpamAssassin/Conf.pm Thu Aug  1 12:28:38 2019
@@ -4560,7 +4560,7 @@ sub get_rule_value {
 
   # special case rbl_evals since they do not have a priority
   if ($test_type eq 'rbl_evals') {
-    return keys(%{$self->{$test_type}->{$rulename}});
+    return @{$self->{$test_type}->{$rulename}};
   }
 
   if (defined($priority)) {
@@ -4605,19 +4605,24 @@ sub delete_rule {
 sub trim_rules {
   my ($self, $regexp) = @_;
 
+  my ($rec, $err) = compile_regexp($regexp, 0);
+  if (!$rec) {
+    die "config: trim_rules: invalid regexp '$regexp': $err";
+  }
+
   my @all_rules;
 
   foreach my $rule_type ($self->get_rule_types()) {
     push(@all_rules, $self->get_rule_keys($rule_type));
   }
 
-  my @rules_to_keep = grep(/$regexp/, @all_rules);
+  my @rules_to_keep = grep(/$rec/, @all_rules);
 
   if (@rules_to_keep == 0) {
     die "config: trim_rules: all rules excluded, nothing to test\n";
   }
 
-  my @meta_tests    = grep(/$regexp/, $self->get_rule_keys('meta_tests'));
+  my @meta_tests    = grep(/$rec/, $self->get_rule_keys('meta_tests'));
   foreach my $meta (@meta_tests) {
     push(@rules_to_keep, $self->add_meta_depends($meta))
   }

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm?rev=1864149&r1=1864148&r2=1864149&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm Thu Aug  1 12:28:38 2019
@@ -4806,7 +4806,7 @@ sub get_rule_value {
 
   # special case rbl_evals since they do not have a priority
   if ($test_type eq 'rbl_evals') {
-    return keys(%{$self->{$test_type}->{$rulename}});
+    return @{$self->{$test_type}->{$rulename}};
   }
 
   if (defined($priority)) {
@@ -4851,19 +4851,24 @@ sub delete_rule {
 sub trim_rules {
   my ($self, $regexp) = @_;
 
+  my ($rec, $err) = compile_regexp($regexp, 0);
+  if (!$rec) {
+    die "config: trim_rules: invalid regexp '$regexp': $err";
+  }
+
   my @all_rules;
 
   foreach my $rule_type ($self->get_rule_types()) {
     push(@all_rules, $self->get_rule_keys($rule_type));
   }
 
-  my @rules_to_keep = grep(/$regexp/, @all_rules);
+  my @rules_to_keep = grep(/$rec/, @all_rules);
 
   if (@rules_to_keep == 0) {
     die "config: trim_rules: all rules excluded, nothing to test\n";
   }
 
-  my @meta_tests    = grep(/$regexp/, $self->get_rule_keys('meta_tests'));
+  my @meta_tests    = grep(/$rec/, $self->get_rule_keys('meta_tests'));
   foreach my $meta (@meta_tests) {
     push(@rules_to_keep, $self->add_meta_depends($meta))
   }