From owner-svn-ports-all@freebsd.org Tue May 10 03:10:12 2016 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 45476B35438; Tue, 10 May 2016 03:10:12 +0000 (UTC) (envelope-from junovitch@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E3D1711D0; Tue, 10 May 2016 03:10:11 +0000 (UTC) (envelope-from junovitch@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4A3ABlC039229; Tue, 10 May 2016 03:10:11 GMT (envelope-from junovitch@FreeBSD.org) Received: (from junovitch@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4A3A9bn039213; Tue, 10 May 2016 03:10:09 GMT (envelope-from junovitch@FreeBSD.org) Message-Id: <201605100310.u4A3A9bn039213@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: junovitch set sender to junovitch@FreeBSD.org using -f From: Jason Unovitch Date: Tue, 10 May 2016 03:10:09 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org Subject: svn commit: r414914 - in branches/2016Q2/lang: perl5-devel perl5-devel/files perl5.18 perl5.18/files perl5.20 perl5.20/files perl5.22 perl5.22/files X-SVN-Group: ports-branches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 May 2016 03:10:12 -0000 Author: junovitch Date: Tue May 10 03:10:09 2016 New Revision: 414914 URL: https://svnweb.freebsd.org/changeset/ports/414914 Log: MFH r412502 r412503 r413010 r413019 r413036 r413249 r413567: Apply batch of Perl updates up to security issue fix. Fix a Perl security issue. PR: 208879 Reported by: Sevan Janiyan Security: CVE-2016-2381 Sponsored by: Absolight Approved by: ports-secteam (with hat) Added: branches/2016Q2/lang/perl5.18/files/patch-7098eff - copied unchanged from r413567, head/lang/perl5.18/files/patch-7098eff branches/2016Q2/lang/perl5.20/files/patch-7098eff - copied unchanged from r413567, head/lang/perl5.20/files/patch-7098eff branches/2016Q2/lang/perl5.22/files/patch-58eaa11 - copied unchanged from r413567, head/lang/perl5.22/files/patch-58eaa11 Modified: branches/2016Q2/lang/perl5-devel/Makefile branches/2016Q2/lang/perl5-devel/distinfo branches/2016Q2/lang/perl5-devel/files/patch-perl.c branches/2016Q2/lang/perl5-devel/files/patch-t_porting_customized.dat branches/2016Q2/lang/perl5-devel/pkg-plist branches/2016Q2/lang/perl5-devel/version.mk branches/2016Q2/lang/perl5.18/Makefile branches/2016Q2/lang/perl5.18/pkg-plist branches/2016Q2/lang/perl5.20/Makefile branches/2016Q2/lang/perl5.20/pkg-plist branches/2016Q2/lang/perl5.22/Makefile branches/2016Q2/lang/perl5.22/pkg-plist Directory Properties: branches/2016Q2/ (props changed) Modified: branches/2016Q2/lang/perl5-devel/Makefile ============================================================================== --- branches/2016Q2/lang/perl5-devel/Makefile Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5-devel/Makefile Tue May 10 03:10:09 2016 (r414914) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= perl -PORTREVISION= 0 +PORTREVISION= 2 # XXX Remove second line, uncomment first #DISTVERSION= ${PERL_VERSION} DISTVERSION= ${GH_TAGNAME:C/^v//:C/-g[0-9a-f]*$//} @@ -23,13 +23,14 @@ LICENSE_FILE_ART10= ${WRKSRC}/Artistic LICENSE_FILE_GPLv1= ${WRKSRC}/Copying TEST_TARGET= test_harness -TEST_ENV= ${MAKE_ENV} TEST_JOBS=${MAKE_JOBS_NUMBER} +TEST_ENV= ${MAKE_ENV} TEST_JOBS=${MAKE_JOBS_NUMBER} \ + LD_LIBRARY_PATH=${WRKSRC} COMPRESS_ZLIB_RUN_ALL=yes # XXX Remove github things. USE_GITHUB= yes GH_ACCOUNT= Perl GH_PROJECT= perl5 -GH_TAGNAME= v5.23.9-30-g4caf7d8 +GH_TAGNAME= v5.23.9-85-g9b1bcf2 OPTIONS_DEFINE= DEBUG GDBM PERL_64BITINT PTHREAD \ MULTIPLICITY SITECUSTOMIZE @@ -161,6 +162,7 @@ PLIST_SUB+= PERL_VERSION=${PERL_VERSION} SITE_PERL=${SITE_PERL_REL} \ SITE_ARCH=${SITE_ARCH_REL} \ PRIV_LIB=${_PRIV_LIB} \ + PKGNAMESUFFIX=${PKGNAMESUFFIX} \ ARCH_LIB=${_ARCH_LIB} PLIST_SUB+= PORTVERSION=${PORTVERSION} # XXX Remove @@ -271,6 +273,17 @@ post-patch-PTHREAD-off: ${REINPLACE_CMD} -e 's|%%PTHREAD_LIBS%%||g;' \ ${WRKSRC}/hints/freebsd.sh +post-build: + @${REINPLACE_CMD} -e '/^lddlflags/s|-L${WRKSRC} ||' \ + ${WRKSRC}/lib/Config_heavy.pl +.if ${CC} == /nxb-bin/usr/bin/cc + @${REINPLACE_CMD} -e 's=/nxb-bin==' \ + ${WRKSRC}/lib/Config.pm ${WRKSRC}/lib/Config_heavy.pl +# Restore Config.pm's timestamp so that Perl's build system does not think it +# needs to rebuild everything. + @${TOUCH} -r ${WRKSRC}/lib/Config.pm.bak ${WRKSRC}/lib/Config.pm +.endif + post-install: ${MKDIR} ${STAGEDIR}${SITE_MAN1} ${STAGEDIR}${SITE_MAN3} ${MKDIR} ${STAGEDIR}${SITE_ARCH}/auto @@ -295,6 +308,6 @@ post-install: ${STRIP_CMD} $$f; \ ${CHMOD} 444 $$f; \ done - ${INSTALL_DATA} ${WRKDIR}/perl-man.conf ${STAGEDIR}${PREFIX}/etc/man.d/perl${PERL_VER}.conf + ${INSTALL_DATA} ${WRKDIR}/perl-man.conf ${STAGEDIR}${PREFIX}/etc/man.d/perl${PKGNAMESUFFIX}.conf .include Modified: branches/2016Q2/lang/perl5-devel/distinfo ============================================================================== --- branches/2016Q2/lang/perl5-devel/distinfo Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5-devel/distinfo Tue May 10 03:10:09 2016 (r414914) @@ -1,2 +1,2 @@ -SHA256 (perl/perl-5.23.9-30_GH0.tar.gz) = c39da02236981dc5acaea469134836083907e393e836a4640d11b7d15bb048f3 -SIZE (perl/perl-5.23.9-30_GH0.tar.gz) = 17864815 +SHA256 (perl/perl-5.23.9-85_GH0.tar.gz) = d9cf37b24daf8054ee86f6ebcff11197b45b52dcc8281c6521b17eedc686ac1d +SIZE (perl/perl-5.23.9-85_GH0.tar.gz) = 17879774 Modified: branches/2016Q2/lang/perl5-devel/files/patch-perl.c ============================================================================== --- branches/2016Q2/lang/perl5-devel/files/patch-perl.c Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5-devel/files/patch-perl.c Tue May 10 03:10:09 2016 (r414914) @@ -1,6 +1,6 @@ ---- perl.c.orig 2016-03-20 17:57:16 UTC +--- perl.c.orig 2016-04-11 00:49:39 UTC +++ perl.c -@@ -1821,23 +1821,7 @@ S_Internals_V(pTHX_ CV *cv) +@@ -1825,23 +1825,7 @@ S_Internals_V(pTHX_ CV *cv) PUSHs(Perl_newSVpvn_flags(aTHX_ non_bincompat_options, sizeof(non_bincompat_options) - 1, SVs_TEMP)); Modified: branches/2016Q2/lang/perl5-devel/files/patch-t_porting_customized.dat ============================================================================== --- branches/2016Q2/lang/perl5-devel/files/patch-t_porting_customized.dat Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5-devel/files/patch-t_porting_customized.dat Tue May 10 03:10:09 2016 (r414914) @@ -1,4 +1,4 @@ ---- t/porting/customized.dat.orig 2016-03-14 01:56:49 UTC +--- t/porting/customized.dat.orig 2016-04-04 04:52:21 UTC +++ t/porting/customized.dat @@ -14,7 +14,7 @@ ExtUtils::MakeMaker cpan/ExtUtils-MakeMa ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm 23a4b33b974e036d59bf55aa02e025506a408048 @@ -9,7 +9,7 @@ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm a0ec076bedfa0c2e52fc2b735fbc75b4c2706bbf ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm 976b10ec76d1fe6f7ee9000b5596e8950434880b ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm bc4b33fa5296ab35bcb1be1c18759b93c4de2598 -@@ -42,7 +42,7 @@ IPC::SysV cpan/IPC-SysV/lib/IPC/SharedMe +@@ -44,7 +44,7 @@ IPC::SysV cpan/IPC-SysV/lib/IPC/SharedMe IPC::SysV cpan/IPC-SysV/lib/IPC/SysV.pm 9a0d1c3dcd67321ef1322f29102a1bc7eb91c61c IPC::SysV cpan/IPC-SysV/t/ipcsysv.t ee2c95e846ea201afe13c9ec53b09cef62c8ac68 Math::BigRat cpan/Math-BigRat/lib/Math/BigRat.pm 6eabc68e04f67694f6fe523e64eb013fc337ca5b Modified: branches/2016Q2/lang/perl5-devel/pkg-plist ============================================================================== --- branches/2016Q2/lang/perl5-devel/pkg-plist Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5-devel/pkg-plist Tue May 10 03:10:09 2016 (r414914) @@ -32,7 +32,7 @@ bin/shasum%%BINSUFFIX%% bin/splain%%BINSUFFIX%% bin/xsubpp%%BINSUFFIX%% bin/zipdetails%%BINSUFFIX%% -etc/man.d/perl%%PERL_VER%%.conf +etc/man.d/perl%%PKGNAMESUFFIX%%.conf %%PRIV_LIB%%/AnyDBM_File.pm %%PRIV_LIB%%/App/Cpan.pm %%PRIV_LIB%%/App/Prove.pm @@ -1448,7 +1448,6 @@ etc/man.d/perl%%PERL_VER%%.conf %%PRIV_LIB%%/pod/perl5220delta.pod %%PRIV_LIB%%/pod/perl5221delta.pod %%PRIV_LIB%%/pod/perl5230delta.pod -%%PRIV_LIB%%/pod/perl52310delta.pod %%PRIV_LIB%%/pod/perl5231delta.pod %%PRIV_LIB%%/pod/perl5232delta.pod %%PRIV_LIB%%/pod/perl5233delta.pod @@ -1458,6 +1457,7 @@ etc/man.d/perl%%PERL_VER%%.conf %%PRIV_LIB%%/pod/perl5237delta.pod %%PRIV_LIB%%/pod/perl5238delta.pod %%PRIV_LIB%%/pod/perl5239delta.pod +%%PRIV_LIB%%/pod/perl5240delta.pod %%PRIV_LIB%%/pod/perl561delta.pod %%PRIV_LIB%%/pod/perl56delta.pod %%PRIV_LIB%%/pod/perl581delta.pod @@ -2126,7 +2126,6 @@ etc/man.d/perl%%PERL_VER%%.conf %%MAN1%%/perl5220delta.1.gz %%MAN1%%/perl5221delta.1.gz %%MAN1%%/perl5230delta.1.gz -%%MAN1%%/perl52310delta.1.gz %%MAN1%%/perl5231delta.1.gz %%MAN1%%/perl5232delta.1.gz %%MAN1%%/perl5233delta.1.gz @@ -2136,6 +2135,7 @@ etc/man.d/perl%%PERL_VER%%.conf %%MAN1%%/perl5237delta.1.gz %%MAN1%%/perl5238delta.1.gz %%MAN1%%/perl5239delta.1.gz +%%MAN1%%/perl5240delta.1.gz %%MAN1%%/perl561delta.1.gz %%MAN1%%/perl56delta.1.gz %%MAN1%%/perl581delta.1.gz Modified: branches/2016Q2/lang/perl5-devel/version.mk ============================================================================== --- branches/2016Q2/lang/perl5-devel/version.mk Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5-devel/version.mk Tue May 10 03:10:09 2016 (r414914) @@ -1,2 +1,2 @@ -PERL_VERSION= 5.23.10 +PERL_VERSION= 5.24.0 PERL5_DEPEND= perl5>=5.23<5.24 Modified: branches/2016Q2/lang/perl5.18/Makefile ============================================================================== --- branches/2016Q2/lang/perl5.18/Makefile Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5.18/Makefile Tue May 10 03:10:09 2016 (r414914) @@ -3,7 +3,7 @@ PORTNAME= perl PORTVERSION= ${PERL_VERSION} -PORTREVISION= 17 +PORTREVISION= 21 CATEGORIES= lang devel perl5 MASTER_SITES= CPAN/../../src/5.0 DIST_SUBDIR= perl @@ -20,7 +20,8 @@ DEPRECATED= Unsupported, please upgrade EXPIRATION_DATE=2016-12-31 TEST_TARGET= test_harness -TEST_ENV= ${MAKE_ENV} TEST_JOBS=${MAKE_JOBS_NUMBER} +TEST_ENV= ${MAKE_ENV} TEST_JOBS=${MAKE_JOBS_NUMBER} \ + LD_LIBRARY_PATH=${WRKSRC} COMPRESS_ZLIB_RUN_ALL=yes OPTIONS_DEFINE= DEBUG GDBM PERL_64BITINT PTHREAD \ MULTIPLICITY SITECUSTOMIZE USE_PERL @@ -201,6 +202,7 @@ PLIST_SUB+= PERL_VERSION=${PERL_VERSION} SITE_PERL=${SITE_PERL_REL} \ SITE_ARCH=${SITE_ARCH_REL} \ PRIV_LIB=${_PRIV_LIB} \ + PKGNAMESUFFIX=${PKGNAMESUFFIX} \ ARCH_LIB=${_ARCH_LIB} # Put a symlink to the future libperl.so.x.yy so that -lperl works. @@ -238,6 +240,17 @@ post-patch-PTHREAD-off: ${WRKSRC}/hints/freebsd.sh .endif +post-build: + @${REINPLACE_CMD} -e '/^lddlflags/s|-L${WRKSRC} ||' \ + ${WRKSRC}/lib/Config_heavy.pl +.if ${CC} == /nxb-bin/usr/bin/cc + @${REINPLACE_CMD} -e 's=/nxb-bin==' \ + ${WRKSRC}/lib/Config.pm ${WRKSRC}/lib/Config_heavy.pl +# Restore Config.pm's timestamp so that Perl's build system does not think it +# needs to rebuild everything. + @${TOUCH} -r ${WRKSRC}/lib/Config.pm.bak ${WRKSRC}/lib/Config.pm +.endif + post-install: ${MKDIR} ${STAGEDIR}${SITE_MAN1} ${STAGEDIR}${SITE_MAN3} ${MKDIR} ${STAGEDIR}${SITE_ARCH}/auto @@ -261,6 +274,6 @@ post-install: ${STRIP_CMD} $$f; \ ${CHMOD} 444 $$f; \ done - ${INSTALL_DATA} ${WRKDIR}/perl-man.conf ${STAGEDIR}${PREFIX}/etc/man.d/perl${PERL_VER}.conf + ${INSTALL_DATA} ${WRKDIR}/perl-man.conf ${STAGEDIR}${PREFIX}/etc/man.d/perl${PKGNAMESUFFIX}.conf .include Copied: branches/2016Q2/lang/perl5.18/files/patch-7098eff (from r413567, head/lang/perl5.18/files/patch-7098eff) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2016Q2/lang/perl5.18/files/patch-7098eff Tue May 10 03:10:09 2016 (r414914, copy of r413567, head/lang/perl5.18/files/patch-7098eff) @@ -0,0 +1,98 @@ +commit 7098efff946437a2db6013d12c4fc3193fc328ce +Author: Tony Cook +Date: 2016-01-27 11:52:15 +1100 + + remove duplicate environment variables from environ + + If we see duplicate environment variables while iterating over + environ[]: + + a) make sure we use the same value in %ENV that getenv() returns. + + Previously on a duplicate, %ENV would have the last entry for the name + from environ[], but a typical getenv() would return the first entry. + + Rather than assuming all getenv() implementations return the first entry + explicitly call getenv() to ensure they agree. + + b) remove duplicate entries from environ + + Previously if there was a duplicate definition for a name in environ[] + setting that name in %ENV could result in an unsafe value being passed + to a child process, so ensure environ[] has no duplicates. + +--- perl.c.orig 2014-10-01 01:33:00 UTC ++++ perl.c +@@ -4272,23 +4272,70 @@ S_init_postdump_symbols(pTHX_ int argc, + } + if (env) { + char *s, *old_var; ++ STRLEN nlen; + SV *sv; ++ HV *dups = newHV(); ++ + for (; *env; env++) { + old_var = *env; + + if (!(s = strchr(old_var,'=')) || s == old_var) + continue; ++ nlen = s - old_var; + + #if defined(MSDOS) && !defined(DJGPP) + *s = '\0'; + (void)strupr(old_var); + *s = '='; + #endif +- sv = newSVpv(s+1, 0); +- (void)hv_store(hv, old_var, s - old_var, sv, 0); ++ if (hv_exists(hv, old_var, nlen)) { ++ const char *name = savepvn(old_var, nlen); ++ ++ /* make sure we use the same value as getenv(), otherwise code that ++ uses getenv() (like setlocale()) might see a different value to %ENV ++ */ ++ sv = newSVpv(PerlEnv_getenv(name), 0); ++ ++ /* keep a count of the dups of this name so we can de-dup environ later */ ++ if (hv_exists(dups, name, nlen)) ++ ++SvIVX(*hv_fetch(dups, name, nlen, 0)); ++ else ++ (void)hv_store(dups, name, nlen, newSViv(1), 0); ++ ++ Safefree(name); ++ } ++ else { ++ sv = newSVpv(s+1, 0); ++ } ++ (void)hv_store(hv, old_var, nlen, sv, 0); + if (env_is_not_environ) + mg_set(sv); + } ++ if (HvKEYS(dups)) { ++ /* environ has some duplicate definitions, remove them */ ++ HE *entry; ++ hv_iterinit(dups); ++ while ((entry = hv_iternext_flags(dups, 0))) { ++ STRLEN nlen; ++ const char *name = HePV(entry, nlen); ++ IV count = SvIV(HeVAL(entry)); ++ IV i; ++ SV **valp = hv_fetch(hv, name, nlen, 0); ++ ++ assert(valp); ++ ++ /* try to remove any duplicate names, depending on the ++ * implementation used in my_setenv() the iteration might ++ * not be necessary, but let's be safe. ++ */ ++ for (i = 0; i < count; ++i) ++ my_setenv(name, 0); ++ ++ /* and set it back to the value we set $ENV{name} to */ ++ my_setenv(name, SvPV_nolen(*valp)); ++ } ++ } ++ SvREFCNT_dec_NN(dups); + } + #endif /* USE_ENVIRON_ARRAY */ + #endif /* !PERL_MICRO */ Modified: branches/2016Q2/lang/perl5.18/pkg-plist ============================================================================== --- branches/2016Q2/lang/perl5.18/pkg-plist Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5.18/pkg-plist Tue May 10 03:10:09 2016 (r414914) @@ -40,7 +40,7 @@ bin/shasum%%BINSUFFIX%% bin/splain%%BINSUFFIX%% bin/xsubpp%%BINSUFFIX%% bin/zipdetails%%BINSUFFIX%% -etc/man.d/perl%%PERL_VER%%.conf +etc/man.d/perl%%PKGNAMESUFFIX%%.conf %%PRIV_LIB%%/AnyDBM_File.pm %%PRIV_LIB%%/App/Cpan.pm %%PRIV_LIB%%/App/Prove.pm Modified: branches/2016Q2/lang/perl5.20/Makefile ============================================================================== --- branches/2016Q2/lang/perl5.20/Makefile Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5.20/Makefile Tue May 10 03:10:09 2016 (r414914) @@ -3,7 +3,7 @@ PORTNAME= perl PORTVERSION= ${PERL_VERSION} -PORTREVISION= 8 +PORTREVISION= 12 CATEGORIES= lang devel perl5 MASTER_SITES= CPAN/../../src/5.0 DIST_SUBDIR= perl @@ -17,7 +17,8 @@ LICENSE_FILE_ART10= ${WRKSRC}/Artistic LICENSE_FILE_GPLv1= ${WRKSRC}/Copying TEST_TARGET= test_harness -TEST_ENV= ${MAKE_ENV} TEST_JOBS=${MAKE_JOBS_NUMBER} +TEST_ENV= ${MAKE_ENV} TEST_JOBS=${MAKE_JOBS_NUMBER} \ + LD_LIBRARY_PATH=${WRKSRC} COMPRESS_ZLIB_RUN_ALL=yes OPTIONS_DEFINE= DEBUG GDBM PERL_64BITINT PTHREAD \ MULTIPLICITY SITECUSTOMIZE @@ -145,6 +146,7 @@ PLIST_SUB+= PERL_VERSION=${PERL_VERSION} SITE_PERL=${SITE_PERL_REL} \ SITE_ARCH=${SITE_ARCH_REL} \ PRIV_LIB=${_PRIV_LIB} \ + PKGNAMESUFFIX=${PKGNAMESUFFIX} \ ARCH_LIB=${_ARCH_LIB} _PERL5_DEFAULT_FILE= /tmp/PERL5_DEFAULT @@ -233,6 +235,17 @@ post-patch-PTHREAD-off: ${WRKSRC}/hints/freebsd.sh .endif +post-build: + @${REINPLACE_CMD} -e '/^lddlflags/s|-L${WRKSRC} ||' \ + ${WRKSRC}/lib/Config_heavy.pl +.if ${CC} == /nxb-bin/usr/bin/cc + @${REINPLACE_CMD} -e 's=/nxb-bin==' \ + ${WRKSRC}/lib/Config.pm ${WRKSRC}/lib/Config_heavy.pl +# Restore Config.pm's timestamp so that Perl's build system does not think it +# needs to rebuild everything. + @${TOUCH} -r ${WRKSRC}/lib/Config.pm.bak ${WRKSRC}/lib/Config.pm +.endif + post-install: ${MKDIR} ${STAGEDIR}${SITE_MAN1} ${STAGEDIR}${SITE_MAN3} ${MKDIR} ${STAGEDIR}${SITE_ARCH}/auto @@ -255,6 +268,6 @@ post-install: ${STRIP_CMD} $$f; \ ${CHMOD} 444 $$f; \ done - ${INSTALL_DATA} ${WRKDIR}/perl-man.conf ${STAGEDIR}${PREFIX}/etc/man.d/perl${PERL_VER}.conf + ${INSTALL_DATA} ${WRKDIR}/perl-man.conf ${STAGEDIR}${PREFIX}/etc/man.d/perl${PKGNAMESUFFIX}.conf .include Copied: branches/2016Q2/lang/perl5.20/files/patch-7098eff (from r413567, head/lang/perl5.20/files/patch-7098eff) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2016Q2/lang/perl5.20/files/patch-7098eff Tue May 10 03:10:09 2016 (r414914, copy of r413567, head/lang/perl5.20/files/patch-7098eff) @@ -0,0 +1,100 @@ +commit 7098efff946437a2db6013d12c4fc3193fc328ce +Author: Tony Cook +Date: 2016-01-27 11:52:15 +1100 + + remove duplicate environment variables from environ + + If we see duplicate environment variables while iterating over + environ[]: + + a) make sure we use the same value in %ENV that getenv() returns. + + Previously on a duplicate, %ENV would have the last entry for the name + from environ[], but a typical getenv() would return the first entry. + + Rather than assuming all getenv() implementations return the first entry + explicitly call getenv() to ensure they agree. + + b) remove duplicate entries from environ + + Previously if there was a duplicate definition for a name in environ[] + setting that name in %ENV could result in an unsafe value being passed + to a child process, so ensure environ[] has no duplicates. + +diff --git perl.c perl.c +index d3e378f..25e2075 100644 +--- perl.c ++++ perl.c +@@ -4281,23 +4281,70 @@ S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env) + } + if (env) { + char *s, *old_var; ++ STRLEN nlen; + SV *sv; ++ HV *dups = newHV(); ++ + for (; *env; env++) { + old_var = *env; + + if (!(s = strchr(old_var,'=')) || s == old_var) + continue; ++ nlen = s - old_var; + + #if defined(MSDOS) && !defined(DJGPP) + *s = '\0'; + (void)strupr(old_var); + *s = '='; + #endif +- sv = newSVpv(s+1, 0); +- (void)hv_store(hv, old_var, s - old_var, sv, 0); ++ if (hv_exists(hv, old_var, nlen)) { ++ const char *name = savepvn(old_var, nlen); ++ ++ /* make sure we use the same value as getenv(), otherwise code that ++ uses getenv() (like setlocale()) might see a different value to %ENV ++ */ ++ sv = newSVpv(PerlEnv_getenv(name), 0); ++ ++ /* keep a count of the dups of this name so we can de-dup environ later */ ++ if (hv_exists(dups, name, nlen)) ++ ++SvIVX(*hv_fetch(dups, name, nlen, 0)); ++ else ++ (void)hv_store(dups, name, nlen, newSViv(1), 0); ++ ++ Safefree(name); ++ } ++ else { ++ sv = newSVpv(s+1, 0); ++ } ++ (void)hv_store(hv, old_var, nlen, sv, 0); + if (env_is_not_environ) + mg_set(sv); + } ++ if (HvKEYS(dups)) { ++ /* environ has some duplicate definitions, remove them */ ++ HE *entry; ++ hv_iterinit(dups); ++ while ((entry = hv_iternext_flags(dups, 0))) { ++ STRLEN nlen; ++ const char *name = HePV(entry, nlen); ++ IV count = SvIV(HeVAL(entry)); ++ IV i; ++ SV **valp = hv_fetch(hv, name, nlen, 0); ++ ++ assert(valp); ++ ++ /* try to remove any duplicate names, depending on the ++ * implementation used in my_setenv() the iteration might ++ * not be necessary, but let's be safe. ++ */ ++ for (i = 0; i < count; ++i) ++ my_setenv(name, 0); ++ ++ /* and set it back to the value we set $ENV{name} to */ ++ my_setenv(name, SvPV_nolen(*valp)); ++ } ++ } ++ SvREFCNT_dec_NN(dups); + } + #endif /* USE_ENVIRON_ARRAY */ + #endif /* !PERL_MICRO */ Modified: branches/2016Q2/lang/perl5.20/pkg-plist ============================================================================== --- branches/2016Q2/lang/perl5.20/pkg-plist Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5.20/pkg-plist Tue May 10 03:10:09 2016 (r414914) @@ -36,7 +36,7 @@ bin/shasum%%BINSUFFIX%% bin/splain%%BINSUFFIX%% bin/xsubpp%%BINSUFFIX%% bin/zipdetails%%BINSUFFIX%% -etc/man.d/perl%%PERL_VER%%.conf +etc/man.d/perl%%PKGNAMESUFFIX%%.conf %%PRIV_LIB%%/AnyDBM_File.pm %%PRIV_LIB%%/App/Cpan.pm %%PRIV_LIB%%/App/Prove.pm Modified: branches/2016Q2/lang/perl5.22/Makefile ============================================================================== --- branches/2016Q2/lang/perl5.22/Makefile Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5.22/Makefile Tue May 10 03:10:09 2016 (r414914) @@ -3,7 +3,7 @@ PORTNAME= perl DISTVERSION= ${PERL_VERSION} -PORTREVISION= 4 +PORTREVISION= 8 CATEGORIES= lang devel perl5 MASTER_SITES= CPAN/../../src/5.0 CPAN/../by-authors/id/S/SH/SHAY DIST_SUBDIR= perl @@ -17,7 +17,8 @@ LICENSE_FILE_ART10= ${WRKSRC}/Artistic LICENSE_FILE_GPLv1= ${WRKSRC}/Copying TEST_TARGET= test_harness -TEST_ENV= ${MAKE_ENV} TEST_JOBS=${MAKE_JOBS_NUMBER} +TEST_ENV= ${MAKE_ENV} TEST_JOBS=${MAKE_JOBS_NUMBER} \ + LD_LIBRARY_PATH=${WRKSRC} COMPRESS_ZLIB_RUN_ALL=yes OPTIONS_DEFINE= DEBUG GDBM PERL_64BITINT PTHREAD \ MULTIPLICITY SITECUSTOMIZE @@ -143,6 +144,7 @@ PLIST_SUB+= PERL_VERSION=${PERL_VERSION} SITE_PERL=${SITE_PERL_REL} \ SITE_ARCH=${SITE_ARCH_REL} \ PRIV_LIB=${_PRIV_LIB} \ + PKGNAMESUFFIX=${PKGNAMESUFFIX} \ ARCH_LIB=${_ARCH_LIB} _PERL5_DEFAULT_FILE= /tmp/PERL5_DEFAULT @@ -231,6 +233,17 @@ post-patch-PTHREAD-off: ${WRKSRC}/hints/freebsd.sh .endif +post-build: + @${REINPLACE_CMD} -e '/^lddlflags/s|-L${WRKSRC} ||' \ + ${WRKSRC}/lib/Config_heavy.pl +.if ${CC} == /nxb-bin/usr/bin/cc + @${REINPLACE_CMD} -e 's=/nxb-bin==' \ + ${WRKSRC}/lib/Config.pm ${WRKSRC}/lib/Config_heavy.pl +# Restore Config.pm's timestamp so that Perl's build system does not think it +# needs to rebuild everything. + @${TOUCH} -r ${WRKSRC}/lib/Config.pm.bak ${WRKSRC}/lib/Config.pm +.endif + post-install: ${MKDIR} ${STAGEDIR}${SITE_MAN1} ${STAGEDIR}${SITE_MAN3} ${MKDIR} ${STAGEDIR}${SITE_ARCH}/auto @@ -253,6 +266,6 @@ post-install: ${STRIP_CMD} $$f; \ ${CHMOD} 444 $$f; \ done - ${INSTALL_DATA} ${WRKDIR}/perl-man.conf ${STAGEDIR}${PREFIX}/etc/man.d/perl${PERL_VER}.conf + ${INSTALL_DATA} ${WRKDIR}/perl-man.conf ${STAGEDIR}${PREFIX}/etc/man.d/perl${PKGNAMESUFFIX}.conf .include Copied: branches/2016Q2/lang/perl5.22/files/patch-58eaa11 (from r413567, head/lang/perl5.22/files/patch-58eaa11) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2016Q2/lang/perl5.22/files/patch-58eaa11 Tue May 10 03:10:09 2016 (r414914, copy of r413567, head/lang/perl5.22/files/patch-58eaa11) @@ -0,0 +1,100 @@ +commit 58eaa1131a38c16ee4a66d0bc36288cfde1a39bf +Author: Tony Cook +Date: 2016-01-27 11:52:15 +1100 + + remove duplicate environment variables from environ + + If we see duplicate environment variables while iterating over + environ[]: + + a) make sure we use the same value in %ENV that getenv() returns. + + Previously on a duplicate, %ENV would have the last entry for the name + from environ[], but a typical getenv() would return the first entry. + + Rather than assuming all getenv() implementations return the first entry + explicitly call getenv() to ensure they agree. + + b) remove duplicate entries from environ + + Previously if there was a duplicate definition for a name in environ[] + setting that name in %ENV could result in an unsafe value being passed + to a child process, so ensure environ[] has no duplicates. + +diff --git perl.c perl.c +index 16a6ca4..8ef7474 100644 +--- perl.c ++++ perl.c +@@ -4298,23 +4298,70 @@ S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env) + } + if (env) { + char *s, *old_var; ++ STRLEN nlen; + SV *sv; ++ HV *dups = newHV(); ++ + for (; *env; env++) { + old_var = *env; + + if (!(s = strchr(old_var,'=')) || s == old_var) + continue; ++ nlen = s - old_var; + + #if defined(MSDOS) && !defined(DJGPP) + *s = '\0'; + (void)strupr(old_var); + *s = '='; + #endif +- sv = newSVpv(s+1, 0); +- (void)hv_store(hv, old_var, s - old_var, sv, 0); ++ if (hv_exists(hv, old_var, nlen)) { ++ const char *name = savepvn(old_var, nlen); ++ ++ /* make sure we use the same value as getenv(), otherwise code that ++ uses getenv() (like setlocale()) might see a different value to %ENV ++ */ ++ sv = newSVpv(PerlEnv_getenv(name), 0); ++ ++ /* keep a count of the dups of this name so we can de-dup environ later */ ++ if (hv_exists(dups, name, nlen)) ++ ++SvIVX(*hv_fetch(dups, name, nlen, 0)); ++ else ++ (void)hv_store(dups, name, nlen, newSViv(1), 0); ++ ++ Safefree(name); ++ } ++ else { ++ sv = newSVpv(s+1, 0); ++ } ++ (void)hv_store(hv, old_var, nlen, sv, 0); + if (env_is_not_environ) + mg_set(sv); + } ++ if (HvKEYS(dups)) { ++ /* environ has some duplicate definitions, remove them */ ++ HE *entry; ++ hv_iterinit(dups); ++ while ((entry = hv_iternext_flags(dups, 0))) { ++ STRLEN nlen; ++ const char *name = HePV(entry, nlen); ++ IV count = SvIV(HeVAL(entry)); ++ IV i; ++ SV **valp = hv_fetch(hv, name, nlen, 0); ++ ++ assert(valp); ++ ++ /* try to remove any duplicate names, depending on the ++ * implementation used in my_setenv() the iteration might ++ * not be necessary, but let's be safe. ++ */ ++ for (i = 0; i < count; ++i) ++ my_setenv(name, 0); ++ ++ /* and set it back to the value we set $ENV{name} to */ ++ my_setenv(name, SvPV_nolen(*valp)); ++ } ++ } ++ SvREFCNT_dec_NN(dups); + } + #endif /* USE_ENVIRON_ARRAY */ + #endif /* !PERL_MICRO */ Modified: branches/2016Q2/lang/perl5.22/pkg-plist ============================================================================== --- branches/2016Q2/lang/perl5.22/pkg-plist Tue May 10 03:00:13 2016 (r414913) +++ branches/2016Q2/lang/perl5.22/pkg-plist Tue May 10 03:10:09 2016 (r414914) @@ -32,7 +32,7 @@ bin/shasum%%BINSUFFIX%% bin/splain%%BINSUFFIX%% bin/xsubpp%%BINSUFFIX%% bin/zipdetails%%BINSUFFIX%% -etc/man.d/perl%%PERL_VER%%.conf +etc/man.d/perl%%PKGNAMESUFFIX%%.conf %%PRIV_LIB%%/AnyDBM_File.pm %%PRIV_LIB%%/App/Cpan.pm %%PRIV_LIB%%/App/Prove.pm