Mailing List Archive

svn commit: r169596 - /spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
Author: quinlan
Date: Wed May 11 00:26:57 2005
New Revision: 169596

URL: http://svn.apache.org/viewcvs?rev=169596&view=rev
Log:
fix is_regexp_valid, header regexp testing, and test regexps how
we use them later

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=169596&r1=169595&r2=169596&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm Wed May 11 00:26:57 2005
@@ -738,14 +738,19 @@
}

# all of these rule types are regexps
- if ($type == $Mail::SpamAssassin::Conf::TYPE_HEAD_TESTS
- || $type == $Mail::SpamAssassin::Conf::TYPE_BODY_TESTS
- || $type == $Mail::SpamAssassin::Conf::TYPE_FULL_TESTS
- || $type == $Mail::SpamAssassin::Conf::TYPE_RAWBODY_TESTS
- || $type == $Mail::SpamAssassin::Conf::TYPE_URI_TESTS)
+ if ($type == $Mail::SpamAssassin::Conf::TYPE_BODY_TESTS ||
+ $type == $Mail::SpamAssassin::Conf::TYPE_FULL_TESTS ||
+ $type == $Mail::SpamAssassin::Conf::TYPE_RAWBODY_TESTS ||
+ $type == $Mail::SpamAssassin::Conf::TYPE_URI_TESTS)
{
return unless $self->is_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);
+ }
elsif ($type == $Mail::SpamAssassin::Conf::TYPE_META_TESTS)
{
return unless $self->is_meta_valid($name, $text);
@@ -816,10 +821,8 @@
sub is_regexp_valid {
my ($self, $name, $re) = @_;

- # get rid of the / delimiters in $re so we can verify it
- $re =~ s/^\/(.*)\/$/$1/;
-
- if (eval { ("" =~ m{$re}); 1; }) {
+ my $evalstr = '("" =~ ' . $re . '); 1;';
+ if (eval $evalstr) {
return 1;
}
else {