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
Jason Unovitch
junovitch at FreeBSD.org
Tue May 10 03:10:12 UTC 2016
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 <bsd.port.mk>
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 <bsd.port.mk>
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 <tony at develop-help.com>
+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 <bsd.port.mk>
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 <tony at develop-help.com>
+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 <bsd.port.mk>
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 <tony at develop-help.com>
+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
More information about the svn-ports-all
mailing list