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 2021/04/08 09:34:11 UTC

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

Author: hege
Date: Thu Apr  8 09:34:10 2021
New Revision: 1888508

URL: http://svn.apache.org/viewvc?rev=1888508&view=rev
Log:
Bug 7586 - Lint does not detect/report unsupported header modifiers

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

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm?rev=1888508&r1=1888507&r2=1888508&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm Thu Apr  8 09:34:10 2021
@@ -1277,7 +1277,6 @@ sub add_test {
     # no re "strict";  # since perl 5.21.8: Ranges of ASCII printables...
     if ($text =~ /^exists:(.*)/) {
       my $hdr = $1;
-      # check :addr etc header options
       # $hdr used in eval text, validate carefully
       if ($hdr !~ /^[\w.-]+:?$/) {
         $self->lint_warn("config: invalid head test $name header: $hdr");
@@ -1288,12 +1287,17 @@ sub add_test {
       $conf->{test_opt_exists}->{$name} = 1;
     } else {
       # $hdr used in eval text, validate carefully
+      # check :addr etc header options
       if ($text !~ /^([\w.-]+(?:\:|(?:\:[a-z]+){1,2})?)\s*([=!]~)\s*(.+)$/) {
         $self->lint_warn("config: invalid head test $name: $text");
         return;
       }
       my ($hdr, $op, $pat) = ($1, $2, $3);
       $hdr =~ s/:$//;
+      if ($hdr =~ /:(?!(?:raw|addr|name|host|domain|ip|revip)\b)/i) {
+        $self->lint_warn("config: invalid header modifier for $name: $hdr", $name);
+        return;
+      }
       if ($pat =~ s/\s+\[if-unset:\s+(.+)\]$//) {
         $conf->{test_opt_unset}->{$name} = $1;
       }