[spamassassin] Add patch to fix warning to syslog with recent perl.·

Kevin Fenzi kevin at fedoraproject.org
Sun Jan 5 15:05:20 UTC 2014


commit c0f95ee91c2f7e8a9c7b7d655098aa247c2e3aa3
Author: Kevin Fenzi <kevin at scrye.com>
Date:   Sun Jan 5 08:05:20 2014 -0700

    Add patch to fix warning to syslog with recent perl.·
    
    - Fixes bug #1023670

 spamassassin-3.3.2-fix-warning.patch |  120 ++++++++++++++++++++++++++++++++++
 spamassassin.spec                    |   12 +++-
 2 files changed, 130 insertions(+), 2 deletions(-)
---
diff --git a/spamassassin-3.3.2-fix-warning.patch b/spamassassin-3.3.2-fix-warning.patch
new file mode 100644
index 0000000..78248a7
--- /dev/null
+++ b/spamassassin-3.3.2-fix-warning.patch
@@ -0,0 +1,120 @@
+diff -Nur Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/AsyncLoop.pm Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/AsyncLoop.pm
+--- Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/AsyncLoop.pm	2011-06-06 17:59:17.000000000 -0600
++++ Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/AsyncLoop.pm	2014-01-04 12:06:42.841484361 -0700
+@@ -360,7 +360,15 @@
+     }
+     $now = time;  # capture new timestamp, after possible sleep in 'select'
+ 
+-    while (my($key,$ent) = each %$pending) {
++    # A callback routine may generate another DNS query, which may insert
++    # an entry into the %$pending hash thus invalidating the each() context.
++    # So, make sure that callbacks are not called while the each() context
++    # is open, or avoid using each().  [Bug 6937]
++    #
++    # while (my($key,$ent) = each %$pending) {
++    foreach my $key (keys %$pending) {
++      my $ent = $pending->{$key};
++
+       my $id = $ent->{id};
+       if (defined $ent->{poll_callback}) {  # call a "poll_callback" if exists
+         # be nice, provide fresh info to a callback routine
+@@ -448,7 +456,8 @@
+   my $pending = $self->{pending_lookups};
+   my $foundcnt = 0;
+   my $now = time;
+-  while (my($key,$ent) = each %$pending) {
++  foreach my $key (keys %$pending) {
++    my $ent = $pending->{$key};
+     dbg("async: aborting after %.3f s, %s: %s",
+         $now - $ent->{start_time},
+         (defined $ent->{timeout_initial} &&
+diff -Nur Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/Conf/Parser.pm Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/Conf/Parser.pm
+--- Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/Conf/Parser.pm	2011-06-06 17:59:17.000000000 -0600
++++ Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/Conf/Parser.pm	2014-01-04 12:07:42.897360312 -0700
+@@ -1248,7 +1248,7 @@
+   my $safere = $re;
+   my $mods = '';
+   local ($1,$2);
+-  if ($re =~ s/^m{//) {
++  if ($re =~ s/^m\{//) {
+     $re =~ s/}([a-z]*)$//; $mods = $1;
+   }
+   elsif ($re =~ s/^m\(//) {
+diff -Nur Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/DnsResolver.pm Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/DnsResolver.pm
+--- Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/DnsResolver.pm	2011-06-06 17:59:17.000000000 -0600
++++ Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/DnsResolver.pm	2014-01-04 12:09:17.797584164 -0700
+@@ -440,10 +440,16 @@
+     { my $timer;  # collects timestamp when variable goes out of scope
+       if (!defined($timeout) || $timeout > 0)
+         { $timer = $self->{main}->time_method("poll_dns_idle") }
++      $! = 0;
+       ($nfound, $timeleft) = select($rout=$rin, undef, undef, $timeout);
+     }
+     if (!defined $nfound || $nfound < 0) {
+-      warn "dns: select failed: $!";
++      if ($!) { warn "dns: select failed: $!\n" }
++      else    { info("dns: select interrupted") }
++      return;
++    } elsif (!$nfound) {
++      if (!defined $timeout) { warn("dns: select returned empty-handed\n") }
++      elsif ($timeout > 0) { dbg("dns: select timed out %.3f s", $timeout) }
+       return;
+     }
+ 
+diff -Nur Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/Message.pm Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/Message.pm
+--- Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/Message.pm	2011-06-06 17:59:17.000000000 -0600
++++ Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/Message.pm	2014-01-04 12:10:02.247752269 -0700
+@@ -566,7 +566,7 @@
+   while (my $part = shift @toclean) {
+     # bug 5557: windows requires tmp file be closed before it can be rm'd
+     if (ref $part->{'raw'} eq 'GLOB') {
+-      close($part->{'raw'})  or die "error closing input file: $!";
++      close($part->{'raw'})  or warn "error closing input file: $!";
+     }
+ 
+     # bug 5858: avoid memory leak with deep MIME structure
+diff -Nur Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/PerMsgStatus.pm Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/PerMsgStatus.pm
+--- Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/PerMsgStatus.pm	2011-06-06 17:59:17.000000000 -0600
++++ Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/PerMsgStatus.pm	2014-01-04 12:12:03.585481321 -0700
+@@ -420,8 +420,8 @@
+       }
+     }
+ 
+-    # ignore tests with 0 score in this scoreset
+-    next if ($scores->{$test} == 0);
++    # ignore tests with 0 score (or undefined) in this scoreset
++    next if !$scores->{$test};
+ 
+     # Go ahead and add points to the proper locations
+     if (!$self->{conf}->maybe_header_only ($test)) {
+@@ -1252,13 +1252,12 @@
+               my $arg = (shift || ",");
+               my $line = '';
+               foreach my $test (sort @{$self->{test_names_hit}}) {
+-                if (!$line) {
+-                  $line .= $test . "=" . $self->{conf}->{scores}->{$test};
+-                } else {
+-                  $line .= $arg . $test . "=" . $self->{conf}->{scores}->{$test};
+-                }
++                my $score = $self->{conf}->{scores}->{$test};
++                $score = '0'  if !defined $score;
++                $line .= $arg  if $line ne '';
++                $line .= $test . "=" . $score;
+               }
+-              $line ? $line : 'none';
++              $line ne '' ? $line : 'none';
+             },
+ 
+             PREVIEW => sub { $self->get_content_preview() },
+diff -Nur Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/Util.pm Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/Util.pm
+--- Mail-SpamAssassin-3.3.2.orig/lib/Mail/SpamAssassin/Util.pm	2011-06-06 17:59:17.000000000 -0600
++++ Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/Util.pm	2014-01-04 12:12:26.262056907 -0700
+@@ -1585,7 +1585,7 @@
+   elsif ($re =~ s/^m{//) {              # m{foo/bar}
+     $delim = '}';
+   }
+-  elsif ($re =~ s/^m\(//) {             # m(foo/bar)
++  elsif ($re =~ s/^m\{//) {             # m{foo/bar}
+     $delim = ')';
+   }
+   elsif ($re =~ s/^m<//) {              # m<foo/bar>
diff --git a/spamassassin.spec b/spamassassin.spec
index c798435..a3b5556 100644
--- a/spamassassin.spec
+++ b/spamassassin.spec
@@ -69,7 +69,7 @@ Summary: Spam filter for email which can be invoked from mail delivery agents
 Name: spamassassin
 Version: 3.3.2
 #Release: 0.8.%{prerev}%{?dist}
-Release: 17%{?dist}
+Release: 18%{?dist}
 License: ASL 2.0
 Group: Applications/Internet
 URL: http://spamassassin.apache.org/
@@ -95,6 +95,10 @@ Source14: spamassassin.service
 # Patches 0-99 are RH specific
 # none yet
 # Patches 100+ are SVN backports (DO NOT REUSE!)
+# Fixes a warning spewed to syslog with recent perl.·
+# https://bugzilla.redhat.com/show_bug.cgi?id=1023670
+# https://issues.apache.org/SpamAssassin/show_bug.cgi?id=6937
+Patch100: spamassassin-3.3.2-fix-warning.patch
 # end of patches
 Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -174,7 +178,7 @@ To filter spam for all users, add that line to /etc/procmailrc
 # Patches 0-99 are RH specific
 # none yet
 # Patches 100+ are SVN backports (DO NOT REUSE!)
-
+%patch100 -p1
 # end of patches
 
 echo "RHEL=%{rhel} FEDORA=%{fedora}"
@@ -364,6 +368,10 @@ fi
 %endif
 
 %changelog
+* Sat Jan 04 2014 Kevin Fenzi <kevin at scrye.com> 3.3.2-18
+- Add patch to fix warning to syslog with recent perl.·
+- Fixes bug #1023670
+
 * Sun Aug 04 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 3.3.2-17
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
 


More information about the scm-commits mailing list