Date: Mon, 3 Mar 2014 18:19:16 +0000 (UTC) From: Adam Weinberger <adamw@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r346947 - in head: japanese/p5-Mail-SpamAssassin mail/p5-Mail-SpamAssassin mail/p5-Mail-SpamAssassin-Alt mail/p5-Mail-SpamAssassin/files Message-ID: <201403031819.s23IJGrl050662@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@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 = '}'; + }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201403031819.s23IJGrl050662>