You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by mm...@apache.org on 2010/10/25 15:03:00 UTC

svn commit: r1027098 - in /spamassassin/trunk/lib/Mail/SpamAssassin: Conf/Parser.pm Plugin/Check.pm

Author: mmartinec
Date: Mon Oct 25 13:03:00 2010
New Revision: 1027098

URL: http://svn.apache.org/viewvc?rev=1027098&view=rev
Log:
Fix a taint issue which shows when running under a Devel::DProf profiler

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Check.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=1027098&r1=1027097&r2=1027098&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm Mon Oct 25 13:03:00 2010
@@ -492,7 +492,9 @@ sub handle_conditional {
   my $bad = 0;
   foreach my $token (@tokens) {
     if ($token =~ /^(?:\W+|[+-]?\d+(?:\.\d+)?)$/) {
-      $eval .= untaint_var($token) . " ";
+      # using tainted subr. argument may taint the whole expression, avoid
+      my $u = untaint_var($token);
+      $eval .= $u . " ";
     }
     elsif ($token eq 'plugin') {
       # replace with method call
@@ -506,7 +508,8 @@ sub handle_conditional {
       $eval .= $Mail::SpamAssassin::VERSION." ";
     }
     elsif ($token =~ /^\w[\w\:]+$/) { # class name
-      $eval .= '"' . untaint_var($token) . '" ';
+      my $u = untaint_var($token);
+      $eval .= '"' . $u . '" ';
     }
     else {
       $bad++;

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Check.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Check.pm?rev=1027098&r1=1027097&r2=1027098&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Check.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/Check.pm Mon Oct 25 13:03:00 2010
@@ -1295,9 +1295,9 @@ EOT
 
 sub hash_line_for_rule {
   my ($self, $pms, $rulename) = @_;
-  return sprintf("\n#line 1 \"%s, rule %s,\"",
-                 untaint_var($pms->{conf}->{source_file}->{$rulename}),
-                 $rulename);
+  # using tainted subr. argument may taint the whole expression, avoid
+  my $u = untaint_var($pms->{conf}->{source_file}->{$rulename});
+  return sprintf("\n#line 1 \"%s, rule %s,\"", $u, $rulename);
 }
 
 sub is_user_rule_sub {