You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by do...@apache.org on 2005/05/12 07:44:08 UTC

svn commit: r169770 - /spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm

Author: dos
Date: Wed May 11 22:44:08 2005
New Revision: 169770

URL: http://svn.apache.org/viewcvs?rev=169770&view=rev
Log:
check (raw)body/full/uri/head tests for valid delimiters

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm?rev=169770&r1=169769&r2=169770&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm Wed May 11 22:44:08 2005
@@ -743,13 +743,13 @@
       $type == $Mail::SpamAssassin::Conf::TYPE_RAWBODY_TESTS ||
       $type == $Mail::SpamAssassin::Conf::TYPE_URI_TESTS)
   {
-    return unless $self->is_regexp_valid($name, $text);
+    return unless $self->is_delimited_regexp_valid($name, $text);
   }
   if ($type == $Mail::SpamAssassin::Conf::TYPE_HEAD_TESTS)
   {
     my ($pat) = ($text =~ /^\s*\S+\s*(?:\=|\!)\~\s*(\S.*?\S)\s*$/);
     $pat =~ s/\s+\[if-unset:\s+(.+)\]\s*$//;
-    return unless $self->is_regexp_valid($name, $pat);
+    return unless $self->is_delimited_regexp_valid($name, $pat);
   }
   elsif ($type == $Mail::SpamAssassin::Conf::TYPE_META_TESTS)
   {
@@ -816,6 +816,17 @@
     $self->{conf}->{errors}++;
     return 0;
   }
+}
+
+sub is_delimited_regexp_valid {
+  my ($self, $name, $re) = @_;
+
+  unless ($re =~ /^\s*m?(\W).*(?:\1|>|}|\)|\])[a-z]*\s*$/) {
+    warn "config: invalid regexp for rule $name: $re: missing or invalid delimiters\n";
+    $self->{conf}->{errors}++;
+    return 0;
+  }
+  return $self->is_regexp_valid($name, $re);
 }
 
 sub is_regexp_valid {