svn commit: r346947 - in head: japanese/p5-Mail-SpamAssassin mail/p5-Mail-SpamAssassin mail/p5-Mail-SpamAssassin-Alt mail/p5-Mail-SpamAssassin/files
Adam Weinberger
adamw at FreeBSD.org
Mon Mar 3 18:19:17 UTC 2014
Author: adamw
Date: Mon Mar 3 18:19:16 2014
New Revision: 346947
URL: http://svnweb.freebsd.org/changeset/ports/346947
QAT: https://qat.redports.org/buildarchive/r346947/
Log:
Add a patch from SpamAssassin bug #6937 to improve compatibility
with perl 5.18's changes to "each" ordering. This fixes the message:
Use of each() on hash after insertion without resetting hash iterator results in undefined behavior, Perl interpreter: 0x2880d800 at /usr/local/lib/perl5/site_perl/5.18/Mail/SpamAssassin/AsyncLoop.pm line 363, <GEN84> line 98.
PR: ports/186819
Approved by: perl (maintainers)
Added:
head/mail/p5-Mail-SpamAssassin/files/patch-bug6937 (contents, props changed)
Modified:
head/japanese/p5-Mail-SpamAssassin/Makefile
head/mail/p5-Mail-SpamAssassin-Alt/Makefile
head/mail/p5-Mail-SpamAssassin/Makefile
Modified: head/japanese/p5-Mail-SpamAssassin/Makefile
==============================================================================
--- head/japanese/p5-Mail-SpamAssassin/Makefile Mon Mar 3 18:03:24 2014 (r346946)
+++ head/japanese/p5-Mail-SpamAssassin/Makefile Mon Mar 3 18:19:16 2014 (r346947)
@@ -1,7 +1,7 @@
# Created by: TAOKA Fumiyoshi
# $FreeBSD$
-PORTREVISION= 4
+PORTREVISION= 5
CATEGORIES= japanese mail perl5
PKGNAMEPREFIX= ja-p5-
Modified: head/mail/p5-Mail-SpamAssassin-Alt/Makefile
==============================================================================
--- head/mail/p5-Mail-SpamAssassin-Alt/Makefile Mon Mar 3 18:03:24 2014 (r346946)
+++ head/mail/p5-Mail-SpamAssassin-Alt/Makefile Mon Mar 3 18:19:16 2014 (r346947)
@@ -1,6 +1,6 @@
# $FreeBSD$
-PORTREVISION= 1
+PORTREVISION= 2
PKGNAMESUFFIX= -Alt
MAINTAINER= ports at FreeBSD.org
Modified: head/mail/p5-Mail-SpamAssassin/Makefile
==============================================================================
--- head/mail/p5-Mail-SpamAssassin/Makefile Mon Mar 3 18:03:24 2014 (r346946)
+++ head/mail/p5-Mail-SpamAssassin/Makefile Mon Mar 3 18:19:16 2014 (r346947)
@@ -3,7 +3,7 @@
PORTNAME= Mail-SpamAssassin
PORTVERSION= 3.3.2
-PORTREVISION?= 8 # committer: please bump PORTREVISION on Slaves
+PORTREVISION?= 9 # committer: please bump PORTREVISION on Slaves
CATEGORIES?= mail perl5
MASTER_SITES= ${MASTER_SITE_APACHE:S/$/:apache/} ${MASTER_SITE_PERL_CPAN:S/$/:cpan/}
MASTER_SITE_SUBDIR= spamassassin/source/:apache Mail/:cpan
Added: head/mail/p5-Mail-SpamAssassin/files/patch-bug6937
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/mail/p5-Mail-SpamAssassin/files/patch-bug6937 Mon Mar 3 18:19:16 2014 (r346947)
@@ -0,0 +1,97 @@
+--- lib/Mail/SpamAssassin/AsyncLoop.pm.orig 2011-06-07 01:59:17.000000000 +0200
++++ lib/Mail/SpamAssassin/AsyncLoop.pm 2013-05-29 01:37:58.000000000 +0200
+@@ -361,5 +361,12 @@
+ $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
+@@ -449,5 +456,6 @@
+ 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},
+--- lib/Mail/SpamAssassin/Conf/Parser.pm.orig 2011-06-07 01:59:17.000000000 +0200
++++ lib/Mail/SpamAssassin/Conf/Parser.pm 2013-05-29 01:32:06.000000000 +0200
+@@ -1249,5 +1249,5 @@
+ my $mods = '';
+ local ($1,$2);
+- if ($re =~ s/^m{//) {
++ if ($re =~ s/^m\{//) {
+ $re =~ s/}([a-z]*)$//; $mods = $1;
+ }
+--- lib/Mail/SpamAssassin/DnsResolver.pm.orig 2011-06-07 01:59:17.000000000 +0200
++++ lib/Mail/SpamAssassin/DnsResolver.pm 2013-05-29 01:32:06.000000000 +0200
+@@ -441,8 +441,14 @@
+ 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;
+ }
+--- lib/Mail/SpamAssassin/Message.pm.orig 2011-06-07 01:59:17.000000000 +0200
++++ lib/Mail/SpamAssassin/Message.pm 2013-05-29 01:32:06.000000000 +0200
+@@ -567,5 +567,5 @@
+ # 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: $!";
+ }
+
+--- lib/Mail/SpamAssassin/PerMsgStatus.pm.orig 2011-06-07 01:59:17.000000000 +0200
++++ lib/Mail/SpamAssassin/PerMsgStatus.pm 2013-05-29 01:32:06.000000000 +0200
+@@ -421,6 +421,6 @@
+ }
+
+- # 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
+@@ -1253,11 +1253,10 @@
+ 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';
+ },
+
+--- lib/Mail/SpamAssassin/Util.pm.orig 2013-05-29 01:29:59.000000000 +0200
++++ lib/Mail/SpamAssassin/Util.pm 2013-05-29 01:33:16.000000000 +0200
+@@ -1588,5 +1588,5 @@
+ return undef; # invalid
+ }
+- elsif ($re =~ s/^m{//) { # m{foo/bar}
++ elsif ($re =~ s/^m\{//) { # m{foo/bar}
+ $delim = '}';
+ }
More information about the svn-ports-all
mailing list