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/25 06:07:14 UTC
svn commit: r178359 - in /spamassassin/trunk/lib/Mail/SpamAssassin: Conf.pm
Conf/Parser.pm Plugin/AWL.pm Plugin/ReplaceTags.pm Plugin/SpamCop.pm
Plugin/URIDNSBL.pm
Author: dos
Date: Tue May 24 21:07:12 2005
New Revision: 178359
URL: http://svn.apache.org/viewcvs?rev=178359&view=rev
Log:
bug 4347: validate the majority of config options
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ReplaceTags.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SpamCop.pm
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm?rev=178359&r1=178358&r2=178359&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm Tue May 24 21:07:12 2005
@@ -232,7 +232,7 @@
info($msg);
}
$self->{errors}++;
- return;
+ return $INVALID_VALUE;
}
# If we're only passed 1 score, copy it to the other scoresets
@@ -259,7 +259,7 @@
info($msg);
}
$self->{errors}++;
- return;
+ return $MISSING_REQUIRED_VALUE;
}
}
});
@@ -364,6 +364,12 @@
setting => 'whitelist_from_rcvd',
code => sub {
my ($self, $key, $value, $line) = @_;
+ unless (defined $value && $value !~ /^$/) {
+ return $MISSING_REQUIRED_VALUE;
+ }
+ unless ($value =~ /^\S+\@\S+\s+\S+$/) {
+ return $INVALID_VALUE;
+ }
$self->{parser}->add_to_addrlist_rcvd ('whitelist_from_rcvd',
split(/\s+/, $value));
}
@@ -373,6 +379,12 @@
setting => 'def_whitelist_from_rcvd',
code => sub {
my ($self, $key, $value, $line) = @_;
+ unless (defined $value && $value !~ /^$/) {
+ return $MISSING_REQUIRED_VALUE;
+ }
+ unless ($value =~ /^\S+\@\S+\s+\S+$/) {
+ return $INVALID_VALUE;
+ }
$self->{parser}->add_to_addrlist_rcvd ('def_whitelist_from_rcvd',
split(/\s+/, $value));
}
@@ -431,6 +443,12 @@
setting => 'unwhitelist_from_rcvd',
code => sub {
my ($self, $key, $value, $line) = @_;
+ unless (defined $value && $value !~ /^$/) {
+ return $MISSING_REQUIRED_VALUE;
+ }
+ unless ($value =~ /^(?:\S+\@\S+(?:\s+\S+\@\S+)*)$/) {
+ return $INVALID_VALUE;
+ }
$self->{parser}->remove_from_addrlist_rcvd('whitelist_from_rcvd',
split (/\s+/, $value));
$self->{parser}->remove_from_addrlist_rcvd('def_whitelist_from_rcvd',
@@ -573,8 +591,11 @@
my($hdr, $string) = split(/\s+/, $value, 2);
$hdr = ucfirst(lc($hdr));
+ if ($hdr =~ /^$/) {
+ return $MISSING_REQUIRED_VALUE;
+ }
# We only deal with From, Subject, and To ...
- if ($hdr =~ /^(?:From|Subject|To)$/) {
+ elsif ($hdr =~ /^(?:From|Subject|To)$/) {
unless (defined $string && $string =~ /\S/) {
delete $self->{rewrite_header}->{$hdr};
return;
@@ -586,9 +607,11 @@
$self->{rewrite_header}->{$hdr} = $string;
return;
}
-
- # if we get here, note the issue, then we'll fail through for an error.
- info("config: rewrite_header: ignoring $hdr, not From, Subject, or To");
+ else {
+ # if we get here, note the issue, then we'll fail through for an error.
+ info("config: rewrite_header: ignoring $hdr, not From, Subject, or To");
+ return $INVALID_VALUE;
+ }
}
});
@@ -882,6 +905,9 @@
setting => 'trusted_networks',
code => sub {
my ($self, $key, $value, $line) = @_;
+ unless (defined $value && $value !~ /^$/) {
+ return $MISSING_REQUIRED_VALUE;
+ }
foreach my $net (split (/\s+/, $value)) {
$self->{trusted_networks}->add_cidr ($net);
}
@@ -926,6 +952,9 @@
setting => 'internal_networks',
code => sub {
my ($self, $key, $value, $line) = @_;
+ unless (defined $value && $value !~ /^$/) {
+ return $MISSING_REQUIRED_VALUE;
+ }
foreach my $net (split (/\s+/, $value)) {
$self->{internal_networks}->add_cidr ($net);
}
@@ -2172,7 +2201,7 @@
default => '__userstate__/bayes',
code => sub {
my ($self, $key, $value, $line) = @_;
- unless (defined $value) {
+ unless (defined $value && $value !~ /^$/) {
return $MISSING_REQUIRED_VALUE;
}
if (-d $value) {
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm?rev=178359&r1=178358&r2=178359&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm Tue May 24 21:07:12 2005
@@ -573,7 +573,10 @@
sub set_numeric_value {
my ($conf, $key, $value, $line) = @_;
- unless (defined $value && $value =~ /^-?\d+(?:\.\d+)?$/) {
+ unless (defined $value && $value !~ /^$/) {
+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
+ }
+ unless ($value =~ /^-?\d+(?:\.\d+)?$/) {
return $Mail::SpamAssassin::Conf::INVALID_VALUE;
}
@@ -583,7 +586,10 @@
sub set_bool_value {
my ($conf, $key, $value, $line) = @_;
- unless (defined $value && ($value == 1 || $value == 0) ) {
+ unless (defined $value && $value !~ /^$/) {
+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
+ }
+ unless ($value == 1 || $value == 0) {
return $Mail::SpamAssassin::Conf::INVALID_VALUE;
}
@@ -593,7 +599,7 @@
sub set_string_value {
my ($conf, $key, $value, $line) = @_;
- unless (defined $value) {
+ unless (defined $value && $value !~ /^$/) {
return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
}
@@ -613,11 +619,19 @@
sub set_addrlist_value {
my ($conf, $key, $value, $line) = @_;
+
+ unless (defined $value && $value =~ /^(?:\S+\@\S+(?:\s+\S+\@\S+)*)$/) {
+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
+ }
$conf->{parser}->add_to_addrlist ($key, split (' ', $value));
}
sub remove_addrlist_value {
my ($conf, $key, $value, $line) = @_;
+
+ unless (defined $value && $value =~ /^(?:\S+\@\S+(?:\s+\S+\@\S+)*)$/) {
+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
+ }
$conf->{parser}->remove_from_addrlist ($key, split (' ', $value));
}
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm?rev=178359&r1=178358&r2=178359&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm Tue May 24 21:07:12 2005
@@ -197,7 +197,7 @@
default => '__userstate__/auto-whitelist',
code => sub {
my ($self, $key, $value, $line) = @_;
- unless (defined $value) {
+ unless (defined $value && $value !~ /^$/) {
return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
}
if (-d $value) {
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ReplaceTags.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ReplaceTags.pm?rev=178359&r1=178358&r2=178359&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ReplaceTags.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/ReplaceTags.pm Tue May 24 21:07:12 2005
@@ -226,6 +226,12 @@
setting => 'replace_rules',
code => sub {
my ($self, $key, $value, $line) = @_;
+ unless (defined $value && $value !~ /^$/) {
+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
+ }
+ unless ($value =~ /\S+/) {
+ return $Mail::SpamAssassin::Conf::INVALID_VALUE;
+ }
foreach my $rule (split(' ', $value)) {
$conf->{rules_to_replace}->{$rule} = 1;
}
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SpamCop.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SpamCop.pm?rev=178359&r1=178358&r2=178359&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SpamCop.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/SpamCop.pm Tue May 24 21:07:12 2005
@@ -101,6 +101,12 @@
if ($value =~ /([^<\s]+\@[^>\s]+)/) {
$self->{spamcop_from_address} = $1;
}
+ elsif ($value =~ /^$/) {
+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
+ }
+ else {
+ return $Mail::SpamAssassin::Conf::INVALID_VALUE;
+ }
},
});
@@ -122,6 +128,12 @@
my ($self, $key, $value, $line) = @_;
if ($value =~ /([^<\s]+\@[^>\s]+)/) {
$self->{spamcop_to_address} = $1;
+ }
+ elsif ($value =~ /^$/) {
+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
+ }
+ else {
+ return $Mail::SpamAssassin::Conf::INVALID_VALUE;
}
},
});
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm
URL: http://svn.apache.org/viewcvs/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm?rev=178359&r1=178358&r2=178359&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm Tue May 24 21:07:12 2005
@@ -309,6 +309,12 @@
is_rhsbl => 0
};
}
+ elsif ($value =~ /^$/) {
+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
+ }
+ else {
+ return $Mail::SpamAssassin::Conf::INVALID_VALUE;
+ }
}
});
@@ -325,6 +331,12 @@
is_rhsbl => 1
};
}
+ elsif ($value =~ /^$/) {
+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
+ }
+ else {
+ return $Mail::SpamAssassin::Conf::INVALID_VALUE;
+ }
}
});
@@ -346,6 +358,12 @@
rulename => $rulename
};
}
+ elsif ($value =~ /^$/) {
+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
+ }
+ else {
+ return $Mail::SpamAssassin::Conf::INVALID_VALUE;
+ }
}
});
@@ -354,6 +372,9 @@
default => {},
code => sub {
my ($self, $key, $value, $line) = @_;
+ if ($value =~ /^$/) {
+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
+ }
foreach my $domain (split(/\s+/, $value)) {
$self->{uridnsbl_skip_domains}->{lc $domain} = 1;
}
Re: svn commit: r178359 - in /spamassassin/trunk/lib/Mail/SpamAssassin:
Conf.pm Conf/Parser.pm Plugin/AWL.pm Plugin/ReplaceTags.pm Plugin/SpamCop.pm
Plugin/URIDNSBL.pm
Posted by Michael Parker <pa...@pobox.com>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
> sub set_addrlist_value {
> my ($conf, $key, $value, $line) = @_;
> +
> + unless (defined $value && $value =~ /^(?:\S+\@\S+(?:\s+\S+\@\S+)*)$/) {
> + return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE;
> + }
> $conf->{parser}->add_to_addrlist ($key, split (' ', $value));
> }
Pretty sure this isn't correct.
- From the documentation:
Whitelist and blacklist addresses are now file-glob-style
patterns, so "friend@somewhere.com", "*@isp.com", or
"*.domain.net" will all work. Specifically, "*" and "?" are
allowed, but all other metacharacters are not. Reg-
ular expressions are not used for security reasons.
That break *.domain.net.
Michael
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFClUPzG4km+uS4gOIRAjZLAJ9fhn/LhJq7D5HTrc+cICv7nepHWgCfduGs
VJh3L7xkBw6jG79kiuQ82jQ=
=ovib
-----END PGP SIGNATURE-----