diff -urp Mail-SpamAssassin-3.4.2.old/lib/Mail/SpamAssassin/Conf.pm Mail-SpamAssassin-3.4.2/lib/Mail/SpamAssassin/Conf.pm --- Mail-SpamAssassin-3.4.2.old/lib/Mail/SpamAssassin/Conf.pm 2020-06-15 19:10:21.700917582 +0200 +++ Mail-SpamAssassin-3.4.2/lib/Mail/SpamAssassin/Conf.pm 2020-06-15 19:07:59.045897164 +0200 @@ -3414,6 +3414,20 @@ internally, and should not be used. setting => 'priority', is_priv => 1, type => $CONF_TYPE_HASH_KEY_VALUE, + code => sub { + my ($self, $key, $value, $line) = @_; + my ($rulename, $priority) = split(/\s+/, $value, 2); + unless (defined $priority) { + return $MISSING_REQUIRED_VALUE; + } + unless ($rulename =~ IS_RULENAME) { + return $INVALID_VALUE; + } + unless ($priority =~ /^-?\d+$/) { + return $INVALID_VALUE; + } + $self->{priority}->{$rulename} = $priority; + } }); =back diff -urp Mail-SpamAssassin-3.4.2.old/lib/Mail/SpamAssassin/Constants.pm Mail-SpamAssassin-3.4.2/lib/Mail/SpamAssassin/Constants.pm --- Mail-SpamAssassin-3.4.2.old/lib/Mail/SpamAssassin/Constants.pm 2020-06-15 19:10:21.701917596 +0200 +++ Mail-SpamAssassin-3.4.2/lib/Mail/SpamAssassin/Constants.pm 2020-06-15 19:07:59.045897164 +0200 @@ -43,7 +43,7 @@ BEGIN { HARVEST_DNSBL_PRIORITY MBX_SEPARATOR MAX_BODY_LINE_LENGTH MAX_HEADER_KEY_LENGTH MAX_HEADER_VALUE_LENGTH MAX_HEADER_LENGTH ARITH_EXPRESSION_LEXER AI_TIME_UNKNOWN - CHARSETS_LIKELY_TO_FP_AS_CAPS MAX_URI_LENGTH RULENAME_RE + CHARSETS_LIKELY_TO_FP_AS_CAPS MAX_URI_LENGTH RULENAME_RE IS_RULENAME ); %EXPORT_TAGS = ( @@ -404,5 +404,7 @@ use constant CHARSETS_LIKELY_TO_FP_AS_CA # Allowed rulename format use constant RULENAME_RE => qr([_a-zA-Z][_a-zA-Z0-9]{0,127}); +# Exact match +use constant IS_RULENAME => qr/^${\(RULENAME_RE)}$/; 1;