Compare commits

...

9 Commits
master ... f28

Author SHA1 Message Date
Petr Písař 7b3006d8dc Fix an infinite loop in the regular expression compiler 2018-05-25 16:15:09 +02:00
Petr Písař d9e3a0c6fb Bug 1536752 is known as RT#133184 2018-05-25 16:13:34 +02:00
Petr Písař fdfc4810ad Fix a possibly unitialized memory read in the Perl parser 2018-05-25 16:13:14 +02:00
Petr Písař 9346c6dd93 Fix parsing extended bracketed character classes 2018-05-25 16:10:23 +02:00
Petr Písař 53b875fa58 Fix line numbers in multi-line s/// 2018-05-25 16:07:27 +02:00
Petr Písař 968acb6fc7 Do not clobber file bytes in :encoding layer 2018-05-25 16:02:26 +02:00
Petr Písař ebf06dd659 perl-devel requires redhat-rpm-config because of hardened compiler profiles
$Config{ccflags} inherits
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 from perl.spec build
time. That breaks building XS modules if redhat-rpm-config is not
installed.
2018-05-25 15:50:14 +02:00
Jitka Plesnikova 11024b0f9d Correct license tags of perl-libs (bug #1579524) 2018-05-18 13:30:50 +02:00
Petr Písař feb15b2a52 5.26.2 bump 2018-04-16 13:30:56 +02:00
19 changed files with 825 additions and 1149 deletions

2
.gitignore vendored
View File

@ -25,3 +25,5 @@ perl-5.12.1.tar.gz
/perl-5.24.1.tar.bz2
/perl-5.26.0.tar.bz2
/perl-5.26.1.tar.bz2
/perl-5.26.2-RC1.tar.bz2
/perl-5.26.2.tar.bz2

View File

@ -1,5 +1,34 @@
%global gendep_perl \
%{nil}
%global gendep_perl_Archive_Tar \
Requires: perl(:VERSION) >= 5.5.0 \
Requires: perl(Archive::Tar) \
Requires: perl(Archive::Tar::Constant) \
Requires: perl(Archive::Tar::File) \
Requires: perl(Carp) \
Requires: perl(Config) \
Requires: perl(Cwd) \
Requires: perl(Data::Dumper) \
Requires: perl(Exporter) \
Requires: perl(File::Basename) \
Requires: perl(File::Find) \
Requires: perl(File::Path) \
Requires: perl(File::Spec) \
Requires: perl(File::Spec::Unix) \
Requires: perl(Getopt::Long) \
Requires: perl(Getopt::Std) \
Requires: perl(IO::File) \
Requires: perl(IO::Handle) \
Requires: perl(IO::Zlib) \
Requires: perl(Pod::Usage) \
Requires: perl(constant) \
Requires: perl(strict) \
Requires: perl(vars) \
Requires: perl(warnings) \
Provides: perl(Archive::Tar) = 2.24 \
Provides: perl(Archive::Tar::Constant) = 2.24 \
Provides: perl(Archive::Tar::File) = 2.24 \
%{nil}
%global gendep_perl_Attribute_Handlers \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(Carp) \
@ -182,6 +211,8 @@ Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Compress::Raw::Bzip2) = 2.074 \
%{nil}
%global gendep_perl_Compress_Raw_Bzip2_debuginfo \
%{nil}
%global gendep_perl_Compress_Raw_Zlib \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(Carp) \
@ -192,6 +223,8 @@ Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Compress::Raw::Zlib) = 2.074 \
%{nil}
%global gendep_perl_Compress_Raw_Zlib_debuginfo \
%{nil}
%global gendep_perl_Config_Perl_V \
Requires: perl(Config) \
Requires: perl(Exporter) \
@ -213,6 +246,8 @@ Provides: perl(DB_File::BTREEINFO) \
Provides: perl(DB_File::HASHINFO) \
Provides: perl(DB_File::RECNOINFO) \
%{nil}
%global gendep_perl_DB_File_debuginfo \
%{nil}
%global gendep_perl_Data_Dumper \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(Carp) \
@ -220,6 +255,8 @@ Requires: perl(Exporter) \
Requires: perl(constant) \
Provides: perl(Data::Dumper) = 2.167 \
%{nil}
%global gendep_perl_Data_Dumper_debuginfo \
%{nil}
%global gendep_perl_Devel_PPPort \
Requires: perl(strict) \
Requires: perl(vars) \
@ -230,6 +267,8 @@ Requires: perl(Exporter) \
Requires: perl(XSLoader) \
Provides: perl(Devel::Peek) = 1.26 \
%{nil}
%global gendep_perl_Devel_Peek_debuginfo \
%{nil}
%global gendep_perl_Devel_SelfStubber \
Requires: perl(File::Spec) \
Requires: perl(SelfLoader) \
@ -251,6 +290,8 @@ Requires: perl(strict) \
Requires: perl(vars) \
Provides: perl(Digest::MD5) = 2.55 \
%{nil}
%global gendep_perl_Digest_MD5_debuginfo \
%{nil}
%global gendep_perl_Digest_SHA \
Requires: perl(:VERSION) >= 5.3.0 \
Requires: perl(DynaLoader) \
@ -263,6 +304,8 @@ Requires: perl(vars) \
Requires: perl(warnings) \
Provides: perl(Digest::SHA) = 5.96 \
%{nil}
%global gendep_perl_Digest_SHA_debuginfo \
%{nil}
%global gendep_perl_Encode \
Requires: perl(:VERSION) >= 5.8.0 \
Requires: perl(:VERSION) >= 5.8.1 \
@ -322,6 +365,8 @@ Provides: perl(Encode::Unicode::UTF7) = 2.8 \
Provides: perl(Encode::XS) \
Provides: perl(Encode::utf8) \
%{nil}
%global gendep_perl_Encode_debuginfo \
%{nil}
%global gendep_perl_Encode_devel \
Requires: perl(Config) \
Requires: perl(File::Find) \
@ -607,6 +652,8 @@ Requires: perl(Text::Balanced) \
Requires: perl(vars) \
Provides: perl(Filter::Simple) = 0.93 \
%{nil}
%global gendep_perl_Filter_debuginfo \
%{nil}
%global gendep_perl_Getopt_Long \
Requires: perl(:VERSION) >= 5.4.0 \
Requires: perl(Exporter) \
@ -626,251 +673,6 @@ Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(HTTP::Tiny) = 0.070 \
%{nil}
%global gendep_perl_interpreter \
Requires: perl(:VERSION) >= 5.0.0 \
Requires: perl(:VERSION) >= 5.10.1 \
Requires: perl(:VERSION) >= 5.24.0 \
Requires: perl(:VERSION) >= 5.3.0 \
Requires: perl(:VERSION) >= 5.5.0 \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(:VERSION) >= 5.7.0 \
Requires: perl(:VERSION) >= 5.7.3 \
Requires: perl(:VERSION) >= 5.8.0 \
Requires: perl(:VERSION) >= 5.9.1 \
Requires: perl(:VERSION) >= 5.9.4 \
Requires: perl(B) \
Requires: perl(B::Concise) \
Requires: perl(B::Op_private) \
Requires: perl(B::Terse) \
Requires: perl(Carp) \
Requires: perl(Class::Struct) \
Requires: perl(Config) \
Requires: perl(Cwd) \
Requires: perl(Exporter) \
Requires: perl(ExtUtils::Constant::Base) \
Requires: perl(ExtUtils::Constant::Utils) \
Requires: perl(ExtUtils::Constant::XS) \
Requires: perl(Fcntl) \
Requires: perl(File::Basename) \
Requires: perl(File::Path) \
Requires: perl(File::Spec) \
Requires: perl(File::Spec::Functions) \
Requires: perl(I18N::LangTags) \
Requires: perl(IO::File) \
Requires: perl(IPC::Open3) \
Requires: perl(Opcode) >= 1.01 \
Requires: perl(POSIX) \
Requires: perl(Scalar::Util) >= 1.10 \
Requires: perl(Symbol) \
Requires: perl(Text::Tabs) \
Requires: perl(Text::Wrap) \
Requires: perl(Tie::Handle) \
Requires: perl(Tie::Hash) \
Requires: perl(Tie::StdHandle) \
Requires: perl(Time::tm) \
Requires: perl(Unicode::Normalize) \
Requires: perl(XSLoader) \
Requires: perl(_charnames) \
Requires: perl(bytes) \
Requires: perl(charnames) \
Requires: perl(constant) \
Requires: perl(feature) \
Requires: perl(if) \
Requires: perl(integer) \
Requires: perl(overload) \
Requires: perl(parent) \
Requires: perl(re) \
Requires: perl(strict) \
Requires: perl(subs) \
Requires: perl(threads) \
Requires: perl(threads::shared) \
Requires: perl(unicore::Name) \
Requires: perl(utf8) \
Requires: perl(vars) \
Requires: perl(warnings) \
Requires: perl(warnings::register) \
Provides: perl(AnyDBM_File) = 1.01 \
Provides: perl(AutoLoader) = 5.74 \
Provides: perl(AutoSplit) = 1.06 \
Provides: perl(B) = 1.68 \
Provides: perl(B::Concise) = 0.999 \
Provides: perl(B::Deparse) = 1.40 \
Provides: perl(B::OBJECT) \
Provides: perl(B::Op_private) = 5.026000 \
Provides: perl(B::Showlex) = 1.05 \
Provides: perl(B::Terse) = 1.07 \
Provides: perl(B::Xref) = 1.06 \
Provides: perl(Benchmark) = 1.22 \
Provides: perl(Class::Struct) = 0.65 \
Provides: perl(Class::Struct::Tie_ISA) \
Provides: perl(Config) = 5.026000 \
Provides: perl(Config::Extensions) = 0.01 \
Provides: perl(DB) = 1.08 \
Provides: perl(DBM_Filter) = 0.06 \
Provides: perl(DBM_Filter::compress) = 0.03 \
Provides: perl(DBM_Filter::encode) = 0.03 \
Provides: perl(DBM_Filter::int32) = 0.03 \
Provides: perl(DBM_Filter::null) = 0.03 \
Provides: perl(DBM_Filter::utf8) = 0.03 \
Provides: perl(DirHandle) = 1.04 \
Provides: perl(Dumpvalue) = 1.18 \
Provides: perl(DynaLoader) = 1.42 \
Provides: perl(EVERY::LAST) \
Provides: perl(English) = 1.10 \
Provides: perl(ExtUtils::Constant) = 0.23 \
Provides: perl(ExtUtils::Constant::Base) = 0.05 \
Provides: perl(ExtUtils::Constant::ProxySubs) = 0.08 \
Provides: perl(ExtUtils::Constant::Utils) = 0.03 \
Provides: perl(ExtUtils::Constant::XS) = 0.03 \
Provides: perl(Fcntl) = 1.13 \
Provides: perl(File::Basename) = 2.85 \
Provides: perl(File::Compare) = 1.1006 \
Provides: perl(File::Copy) = 2.32 \
Provides: perl(File::DosGlob) = 1.12 \
Provides: perl(File::Find) = 1.34 \
Provides: perl(File::Glob) = 1.28 \
Provides: perl(File::stat) = 1.07 \
Provides: perl(FileCache) = 1.09 \
Provides: perl(FileHandle) = 2.03 \
Provides: perl(FindBin) = 1.51 \
Provides: perl(GDBM_File) = 1.15 \
Provides: perl(Getopt::Std) = 1.12 \
Provides: perl(Hash::Util) = 0.22 \
Provides: perl(Hash::Util::FieldHash) = 1.19 \
Provides: perl(I18N::Collate) = 1.02 \
Provides: perl(I18N::LangTags) = 0.42 \
Provides: perl(I18N::LangTags::Detect) = 1.06 \
Provides: perl(I18N::LangTags::List) = 0.39 \
Provides: perl(I18N::Langinfo) = 0.13 \
Provides: perl(IPC::Open2) = 1.04 \
Provides: perl(IPC::Open3) = 1.20 \
Provides: perl(NDBM_File) = 1.14 \
Provides: perl(NEXT) = 0.67 \
Provides: perl(NEXT::ACTUAL) \
Provides: perl(NEXT::ACTUAL::DISTINCT) \
Provides: perl(NEXT::ACTUAL::UNSEEN) \
Provides: perl(NEXT::DISTINCT) \
Provides: perl(NEXT::DISTINCT::ACTUAL) \
Provides: perl(NEXT::UNSEEN) \
Provides: perl(NEXT::UNSEEN::ACTUAL) \
Provides: perl(Net::hostent) = 1.01 \
Provides: perl(Net::netent) = 1.00 \
Provides: perl(Net::protoent) = 1.00 \
Provides: perl(Net::servent) = 1.01 \
Provides: perl(O) = 1.01 \
Provides: perl(ODBM_File) = 1.14 \
Provides: perl(Opcode) = 1.39 \
Provides: perl(POSIX) = 1.76 \
Provides: perl(POSIX::SigAction) \
Provides: perl(POSIX::SigRt) \
Provides: perl(POSIX::SigSet) \
Provides: perl(PerlIO) = 1.10 \
Provides: perl(PerlIO::encoding) = 0.25 \
Provides: perl(PerlIO::mmap) = 0.016 \
Provides: perl(PerlIO::scalar) = 0.26 \
Provides: perl(PerlIO::via) = 0.16 \
Provides: perl(Pod::Functions) = 1.11 \
Provides: perl(SDBM_File) = 1.14 \
Provides: perl(Safe) = 2.40 \
Provides: perl(Search::Dict) = 1.07 \
Provides: perl(SelectSaver) = 1.02 \
Provides: perl(Symbol) = 1.08 \
Provides: perl(Sys::Hostname) = 1.20 \
Provides: perl(Term::Complete) = 1.403 \
Provides: perl(Term::ReadLine) = 1.16 \
Provides: perl(Term::ReadLine::Stub) \
Provides: perl(Term::ReadLine::TermCap) \
Provides: perl(Term::ReadLine::Tk) \
Provides: perl(Text::Abbrev) = 1.02 \
Provides: perl(Thread) = 3.04 \
Provides: perl(Thread::Semaphore) = 2.13 \
Provides: perl(Tie::Array) = 1.06 \
Provides: perl(Tie::ExtraHash) \
Provides: perl(Tie::File) = 1.02 \
Provides: perl(Tie::File::Cache) \
Provides: perl(Tie::File::Heap) \
Provides: perl(Tie::Handle) = 4.2 \
Provides: perl(Tie::Hash) \
Provides: perl(Tie::Hash) = 1.05 \
Provides: perl(Tie::Hash::NamedCapture) = 0.10 \
Provides: perl(Tie::Memoize) = 1.1 \
Provides: perl(Tie::RefHash) = 1.39 \
Provides: perl(Tie::RefHash::Nestable) \
Provides: perl(Tie::Scalar) = 1.04 \
Provides: perl(Tie::StdArray) \
Provides: perl(Tie::StdHandle) = 4.4 \
Provides: perl(Tie::StdHash) \
Provides: perl(Tie::StdScalar) \
Provides: perl(Tie::SubstrHash) = 1.00 \
Provides: perl(Time::gmtime) = 1.03 \
Provides: perl(Time::localtime) = 1.02 \
Provides: perl(Time::tm) = 1.00 \
Provides: perl(UNIVERSAL) = 1.13 \
Provides: perl(Unicode::UCD) = 0.68 \
Provides: perl(User::grent) = 1.01 \
Provides: perl(User::pwent) = 1.00 \
Provides: perl(_charnames) = 1.44 \
Provides: perl(arybase) = 0.12 \
Provides: perl(attributes) = 0.29 \
Provides: perl(autouse) = 1.11 \
Provides: perl(base) = 2.25 \
Provides: perl(blib) = 1.06 \
Provides: perl(bytes) = 1.05 \
Provides: perl(bytes_heavy.pl) \
Provides: perl(charnames) = 1.44 \
Provides: perl(deprecate) = 0.03 \
Provides: perl(diagnostics) = 1.36 \
Provides: perl(dumpvar.pl) \
Provides: perl(encoding::warnings) = 0.13 \
Provides: perl(feature) = 1.47 \
Provides: perl(fields) = 2.23 \
Provides: perl(filetest) = 1.03 \
Provides: perl(if) = 0.0606 \
Provides: perl(less) = 0.03 \
Provides: perl(lib) = 0.64 \
Provides: perl(locale) = 1.09 \
Provides: perl(mro) = 1.20 \
Provides: perl(ops) = 1.02 \
Provides: perl(overload) = 1.28 \
Provides: perl(overload::numbers) \
Provides: perl(overloading) = 0.02 \
Provides: perl(perl5db.pl) \
Provides: perl(sigtrap) = 1.08 \
Provides: perl(sort) = 2.02 \
Provides: perl(subs) = 1.02 \
Provides: perl(vars) = 1.03 \
Provides: perl(vmsish) = 1.04 \
Provides: perl(warnings::register) = 1.04 \
%{nil}
%global gendep_perl_Archive_Tar \
Requires: perl(:VERSION) >= 5.5.0 \
Requires: perl(Archive::Tar) \
Requires: perl(Archive::Tar::Constant) \
Requires: perl(Archive::Tar::File) \
Requires: perl(Carp) \
Requires: perl(Config) \
Requires: perl(Cwd) \
Requires: perl(Data::Dumper) \
Requires: perl(Exporter) \
Requires: perl(File::Basename) \
Requires: perl(File::Find) \
Requires: perl(File::Path) \
Requires: perl(File::Spec) \
Requires: perl(File::Spec::Unix) \
Requires: perl(Getopt::Long) \
Requires: perl(Getopt::Std) \
Requires: perl(IO::File) \
Requires: perl(IO::Handle) \
Requires: perl(IO::Zlib) \
Requires: perl(Pod::Usage) \
Requires: perl(constant) \
Requires: perl(strict) \
Requires: perl(vars) \
Requires: perl(warnings) \
Provides: perl(Archive::Tar) = 2.24 \
Provides: perl(Archive::Tar::Constant) = 2.24 \
Provides: perl(Archive::Tar::File) = 2.24 \
%{nil}
%global gendep_perl_IO \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(Carp) \
@ -1004,6 +806,8 @@ Requires: perl(strict) \
Requires: perl(vars) \
Provides: perl(IO::Zlib) = 1.10 \
%{nil}
%global gendep_perl_IO_debuginfo \
%{nil}
%global gendep_perl_IPC_Cmd \
Requires: perl(Carp) \
Requires: perl(Exporter) \
@ -1034,6 +838,8 @@ Provides: perl(IPC::SharedMem) = 2.07 \
Provides: perl(IPC::SharedMem::stat) \
Provides: perl(IPC::SysV) = 2.07 \
%{nil}
%global gendep_perl_IPC_SysV_debuginfo \
%{nil}
%global gendep_perl_JSON_PP \
Requires: perl(:VERSION) >= 5.5.0 \
Requires: perl(B) \
@ -1104,6 +910,8 @@ Requires: perl(vars) \
Provides: perl(MIME::Base64) = 3.15 \
Provides: perl(MIME::QuotedPrint) = 3.13 \
%{nil}
%global gendep_perl_MIME_Base64_debuginfo \
%{nil}
%global gendep_perl_Math_BigInt \
Requires: perl(:VERSION) >= 5.6.1 \
Requires: perl(Carp) \
@ -1129,6 +937,8 @@ Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Math::BigInt::FastCalc) = 0.5005 \
%{nil}
%global gendep_perl_Math_BigInt_FastCalc_debuginfo \
%{nil}
%global gendep_perl_Math_BigRat \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(Carp) \
@ -1173,9 +983,9 @@ Requires: perl(strict) \
Requires: perl(vars) \
Requires: perl(version) \
Requires: perl(warnings) \
Provides: perl(Module::CoreList) = 5.20170530 \
Provides: perl(Module::CoreList::TieHashDelta) = 5.20170530 \
Provides: perl(Module::CoreList::Utils) = 5.20170530 \
Provides: perl(Module::CoreList) = 5.20180414 \
Provides: perl(Module::CoreList::TieHashDelta) = 5.20180414 \
Provides: perl(Module::CoreList::Utils) = 5.20180414 \
%{nil}
%global gendep_perl_Module_CoreList_tools \
Requires: perl(Getopt::Long) \
@ -1261,6 +1071,8 @@ Provides: perl(File::Spec::OS2) = 3.67 \
Provides: perl(File::Spec::Unix) = 3.67 \
Provides: perl(File::Spec::Win32) = 3.67 \
%{nil}
%global gendep_perl_PathTools_debuginfo \
%{nil}
%global gendep_perl_Perl_OSType \
Requires: perl(Exporter) \
Requires: perl(strict) \
@ -1459,6 +1271,8 @@ Provides: perl(List::Util::XS) = 1.46 \
Provides: perl(Scalar::Util) = 1.46 \
Provides: perl(Sub::Util) = 1.46 \
%{nil}
%global gendep_perl_Scalar_List_Utils_debuginfo \
%{nil}
%global gendep_perl_SelfLoader \
Requires: perl(:VERSION) >= 5.8.0 \
Requires: perl(Exporter) \
@ -1475,12 +1289,16 @@ Requires: perl(strict) \
Requires: perl(warnings::register) \
Provides: perl(Socket) = 2.020 \
%{nil}
%global gendep_perl_Socket_debuginfo \
%{nil}
%global gendep_perl_Storable \
Requires: perl(Exporter) \
Requires: perl(XSLoader) \
Requires: perl(vars) \
Provides: perl(Storable) = 2.62 \
%{nil}
%global gendep_perl_Storable_debuginfo \
%{nil}
%global gendep_perl_Sys_Syslog \
Requires: perl(:VERSION) >= 5.5.0 \
Requires: perl(Carp) \
@ -1496,6 +1314,8 @@ Requires: perl(warnings) \
Requires: perl(warnings::register) \
Provides: perl(Sys::Syslog) = 0.35 \
%{nil}
%global gendep_perl_Sys_Syslog_debuginfo \
%{nil}
%global gendep_perl_Term_ANSIColor \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(Exporter) \
@ -1764,6 +1584,8 @@ Requires: perl(Exporter) \
Requires: perl(strict) \
Provides: perl(Time::HiRes) = 1.9741 \
%{nil}
%global gendep_perl_Time_HiRes_debuginfo \
%{nil}
%global gendep_perl_Time_Local \
Requires: perl(Carp) \
Requires: perl(Exporter) \
@ -1785,6 +1607,8 @@ Requires: perl(strict) \
Provides: perl(Time::Piece) = 1.31 \
Provides: perl(Time::Seconds) = 1.31 \
%{nil}
%global gendep_perl_Time_Piece_debuginfo \
%{nil}
%global gendep_perl_Unicode_Collate \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(Carp) \
@ -1805,6 +1629,8 @@ Provides: perl(Unicode::Collate::CJK::Stroke) = 1.19 \
Provides: perl(Unicode::Collate::CJK::Zhuyin) = 1.19 \
Provides: perl(Unicode::Collate::Locale) = 1.19 \
%{nil}
%global gendep_perl_Unicode_Collate_debuginfo \
%{nil}
%global gendep_perl_Unicode_Normalize \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(Carp) \
@ -1814,6 +1640,8 @@ Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(Unicode::Normalize) = 1.25 \
%{nil}
%global gendep_perl_Unicode_Normalize_debuginfo \
%{nil}
%global gendep_perl_autodie \
Requires: perl(:VERSION) >= 5.8.0 \
Requires: perl(Carp) \
@ -1866,6 +1694,8 @@ Provides: perl(constant) = 1.33 \
%{nil}
%global gendep_perl_debuginfo \
%{nil}
%global gendep_perl_debugsource \
%{nil}
%global gendep_perl_devel \
Requires: perl(Config) \
Requires: perl(ExtUtils::Constant) \
@ -1894,6 +1724,224 @@ Requires: perl(version) \
Requires: perl(warnings) \
Provides: perl(experimental) = 0.016 \
%{nil}
%global gendep_perl_interpreter \
Requires: perl(:VERSION) >= 5.0.0 \
Requires: perl(:VERSION) >= 5.10.1 \
Requires: perl(:VERSION) >= 5.24.0 \
Requires: perl(:VERSION) >= 5.3.0 \
Requires: perl(:VERSION) >= 5.5.0 \
Requires: perl(:VERSION) >= 5.6.0 \
Requires: perl(:VERSION) >= 5.7.0 \
Requires: perl(:VERSION) >= 5.7.3 \
Requires: perl(:VERSION) >= 5.8.0 \
Requires: perl(:VERSION) >= 5.9.1 \
Requires: perl(:VERSION) >= 5.9.4 \
Requires: perl(B) \
Requires: perl(B::Concise) \
Requires: perl(B::Op_private) \
Requires: perl(B::Terse) \
Requires: perl(Carp) \
Requires: perl(Class::Struct) \
Requires: perl(Config) \
Requires: perl(Cwd) \
Requires: perl(Exporter) \
Requires: perl(ExtUtils::Constant::Base) \
Requires: perl(ExtUtils::Constant::Utils) \
Requires: perl(ExtUtils::Constant::XS) \
Requires: perl(Fcntl) \
Requires: perl(File::Basename) \
Requires: perl(File::Path) \
Requires: perl(File::Spec) \
Requires: perl(File::Spec::Functions) \
Requires: perl(I18N::LangTags) \
Requires: perl(IO::File) \
Requires: perl(IPC::Open3) \
Requires: perl(Opcode) >= 1.01 \
Requires: perl(POSIX) \
Requires: perl(Scalar::Util) >= 1.10 \
Requires: perl(Symbol) \
Requires: perl(Text::Tabs) \
Requires: perl(Text::Wrap) \
Requires: perl(Tie::Handle) \
Requires: perl(Tie::Hash) \
Requires: perl(Tie::StdHandle) \
Requires: perl(Time::tm) \
Requires: perl(Unicode::Normalize) \
Requires: perl(XSLoader) \
Requires: perl(_charnames) \
Requires: perl(bytes) \
Requires: perl(charnames) \
Requires: perl(constant) \
Requires: perl(feature) \
Requires: perl(if) \
Requires: perl(integer) \
Requires: perl(overload) \
Requires: perl(parent) \
Requires: perl(re) \
Requires: perl(strict) \
Requires: perl(subs) \
Requires: perl(threads) \
Requires: perl(threads::shared) \
Requires: perl(unicore::Name) \
Requires: perl(utf8) \
Requires: perl(vars) \
Requires: perl(warnings) \
Requires: perl(warnings::register) \
Provides: perl(AnyDBM_File) = 1.01 \
Provides: perl(AutoLoader) = 5.74 \
Provides: perl(AutoSplit) = 1.06 \
Provides: perl(B) = 1.68 \
Provides: perl(B::Concise) = 0.999 \
Provides: perl(B::Deparse) = 1.40 \
Provides: perl(B::OBJECT) \
Provides: perl(B::Op_private) = 5.026002 \
Provides: perl(B::Showlex) = 1.05 \
Provides: perl(B::Terse) = 1.07 \
Provides: perl(B::Xref) = 1.06 \
Provides: perl(Benchmark) = 1.22 \
Provides: perl(Class::Struct) = 0.65 \
Provides: perl(Class::Struct::Tie_ISA) \
Provides: perl(Config) = 5.026002 \
Provides: perl(Config::Extensions) = 0.01 \
Provides: perl(DB) = 1.08 \
Provides: perl(DBM_Filter) = 0.06 \
Provides: perl(DBM_Filter::compress) = 0.03 \
Provides: perl(DBM_Filter::encode) = 0.03 \
Provides: perl(DBM_Filter::int32) = 0.03 \
Provides: perl(DBM_Filter::null) = 0.03 \
Provides: perl(DBM_Filter::utf8) = 0.03 \
Provides: perl(DirHandle) = 1.04 \
Provides: perl(Dumpvalue) = 1.18 \
Provides: perl(DynaLoader) = 1.42 \
Provides: perl(EVERY::LAST) \
Provides: perl(English) = 1.10 \
Provides: perl(ExtUtils::Constant) = 0.23 \
Provides: perl(ExtUtils::Constant::Base) = 0.05 \
Provides: perl(ExtUtils::Constant::ProxySubs) = 0.08 \
Provides: perl(ExtUtils::Constant::Utils) = 0.03 \
Provides: perl(ExtUtils::Constant::XS) = 0.03 \
Provides: perl(Fcntl) = 1.13 \
Provides: perl(File::Basename) = 2.85 \
Provides: perl(File::Compare) = 1.1006 \
Provides: perl(File::Copy) = 2.32 \
Provides: perl(File::DosGlob) = 1.12 \
Provides: perl(File::Find) = 1.34 \
Provides: perl(File::Glob) = 1.28 \
Provides: perl(File::stat) = 1.07 \
Provides: perl(FileCache) = 1.09 \
Provides: perl(FileHandle) = 2.03 \
Provides: perl(FindBin) = 1.51 \
Provides: perl(GDBM_File) = 1.15 \
Provides: perl(Getopt::Std) = 1.12 \
Provides: perl(Hash::Util) = 0.22 \
Provides: perl(Hash::Util::FieldHash) = 1.19 \
Provides: perl(I18N::Collate) = 1.02 \
Provides: perl(I18N::LangTags) = 0.42 \
Provides: perl(I18N::LangTags::Detect) = 1.06 \
Provides: perl(I18N::LangTags::List) = 0.39 \
Provides: perl(I18N::Langinfo) = 0.13 \
Provides: perl(IPC::Open2) = 1.04 \
Provides: perl(IPC::Open3) = 1.20 \
Provides: perl(NDBM_File) = 1.14 \
Provides: perl(NEXT) = 0.67 \
Provides: perl(NEXT::ACTUAL) \
Provides: perl(NEXT::ACTUAL::DISTINCT) \
Provides: perl(NEXT::ACTUAL::UNSEEN) \
Provides: perl(NEXT::DISTINCT) \
Provides: perl(NEXT::DISTINCT::ACTUAL) \
Provides: perl(NEXT::UNSEEN) \
Provides: perl(NEXT::UNSEEN::ACTUAL) \
Provides: perl(Net::hostent) = 1.01 \
Provides: perl(Net::netent) = 1.00 \
Provides: perl(Net::protoent) = 1.00 \
Provides: perl(Net::servent) = 1.01 \
Provides: perl(O) = 1.01 \
Provides: perl(ODBM_File) = 1.14 \
Provides: perl(Opcode) = 1.39 \
Provides: perl(POSIX) = 1.76 \
Provides: perl(POSIX::SigAction) \
Provides: perl(POSIX::SigRt) \
Provides: perl(POSIX::SigSet) \
Provides: perl(PerlIO) = 1.10 \
Provides: perl(PerlIO::encoding) = 0.25 \
Provides: perl(PerlIO::mmap) = 0.016 \
Provides: perl(PerlIO::scalar) = 0.26 \
Provides: perl(PerlIO::via) = 0.17 \
Provides: perl(Pod::Functions) = 1.11 \
Provides: perl(SDBM_File) = 1.14 \
Provides: perl(Safe) = 2.40 \
Provides: perl(Search::Dict) = 1.07 \
Provides: perl(SelectSaver) = 1.02 \
Provides: perl(Symbol) = 1.08 \
Provides: perl(Sys::Hostname) = 1.20 \
Provides: perl(Term::Complete) = 1.403 \
Provides: perl(Term::ReadLine) = 1.17 \
Provides: perl(Term::ReadLine::Stub) \
Provides: perl(Term::ReadLine::TermCap) \
Provides: perl(Term::ReadLine::Tk) \
Provides: perl(Text::Abbrev) = 1.02 \
Provides: perl(Thread) = 3.04 \
Provides: perl(Thread::Semaphore) = 2.13 \
Provides: perl(Tie::Array) = 1.06 \
Provides: perl(Tie::ExtraHash) \
Provides: perl(Tie::File) = 1.02 \
Provides: perl(Tie::File::Cache) \
Provides: perl(Tie::File::Heap) \
Provides: perl(Tie::Handle) = 4.2 \
Provides: perl(Tie::Hash) \
Provides: perl(Tie::Hash) = 1.05 \
Provides: perl(Tie::Hash::NamedCapture) = 0.10 \
Provides: perl(Tie::Memoize) = 1.1 \
Provides: perl(Tie::RefHash) = 1.39 \
Provides: perl(Tie::RefHash::Nestable) \
Provides: perl(Tie::Scalar) = 1.04 \
Provides: perl(Tie::StdArray) \
Provides: perl(Tie::StdHandle) = 4.4 \
Provides: perl(Tie::StdHash) \
Provides: perl(Tie::StdScalar) \
Provides: perl(Tie::SubstrHash) = 1.00 \
Provides: perl(Time::gmtime) = 1.03 \
Provides: perl(Time::localtime) = 1.02 \
Provides: perl(Time::tm) = 1.00 \
Provides: perl(UNIVERSAL) = 1.13 \
Provides: perl(Unicode::UCD) = 0.69 \
Provides: perl(User::grent) = 1.01 \
Provides: perl(User::pwent) = 1.00 \
Provides: perl(_charnames) = 1.45 \
Provides: perl(arybase) = 0.12 \
Provides: perl(attributes) = 0.29 \
Provides: perl(autouse) = 1.11 \
Provides: perl(base) = 2.26 \
Provides: perl(blib) = 1.06 \
Provides: perl(bytes) = 1.05 \
Provides: perl(bytes_heavy.pl) \
Provides: perl(charnames) = 1.45 \
Provides: perl(deprecate) = 0.03 \
Provides: perl(diagnostics) = 1.36 \
Provides: perl(dumpvar.pl) \
Provides: perl(encoding::warnings) = 0.13 \
Provides: perl(feature) = 1.47 \
Provides: perl(fields) = 2.23 \
Provides: perl(filetest) = 1.03 \
Provides: perl(if) = 0.0606 \
Provides: perl(less) = 0.03 \
Provides: perl(lib) = 0.64 \
Provides: perl(locale) = 1.09 \
Provides: perl(mro) = 1.20 \
Provides: perl(ops) = 1.02 \
Provides: perl(overload) = 1.28 \
Provides: perl(overload::numbers) \
Provides: perl(overloading) = 0.02 \
Provides: perl(perl5db.pl) \
Provides: perl(sigtrap) = 1.08 \
Provides: perl(sort) = 2.02 \
Provides: perl(subs) = 1.02 \
Provides: perl(vars) = 1.03 \
Provides: perl(vmsish) = 1.04 \
Provides: perl(warnings::register) = 1.04 \
%{nil}
%global gendep_perl_interpreter_debuginfo \
%{nil}
%global gendep_perl_libnet \
Requires: perl(:VERSION) >= 5.8.1 \
Requires: perl(Carp) \
@ -1944,10 +1992,11 @@ Requires: perl(vars) \
Requires: perl(integer) \
Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(:MODULE_COMPAT_5.24.0) \
Provides: perl(:MODULE_COMPAT_5.24.1) \
Provides: perl(:MODULE_COMPAT_5.26.0) \
Provides: perl(:VERSION) = 5.26.0 \
Provides: perl(:MODULE_COMPAT_5.26.1) \
Provides: perl(:MODULE_COMPAT_5.26.2) \
Provides: perl(:VERSION) = 5.26.2 \
Provides: perl(:WITH_64BIT) \
Provides: perl(:WITH_ITHREADS) \
Provides: perl(:WITH_LARGEFILES) \
Provides: perl(:WITH_PERLIO) \
@ -1961,6 +2010,8 @@ Provides: perl(utf8) = 1.19 \
Provides: perl(utf8_heavy.pl) \
Provides: perl(warnings) = 1.37 \
%{nil}
%global gendep_perl_libs_debuginfo \
%{nil}
%global gendep_perl_macros \
%{nil}
%global gendep_perl_open \
@ -2013,6 +2064,8 @@ Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(threads) = 2.15 \
%{nil}
%global gendep_perl_threads_debuginfo \
%{nil}
%global gendep_perl_threads_shared \
Requires: perl(:VERSION) >= 5.8.0 \
Requires: perl(Scalar::Util) \
@ -2020,6 +2073,8 @@ Requires: perl(strict) \
Requires: perl(warnings) \
Provides: perl(threads::shared) = 1.56 \
%{nil}
%global gendep_perl_threads_shared_debuginfo \
%{nil}
%global gendep_perl_utils \
Requires: perl(:VERSION) >= 5.9.1 \
Requires: perl(Carp) \

View File

@ -1,69 +0,0 @@
From af6344c9702b589162d8672ae24130231698acae Mon Sep 17 00:00:00 2001
From: Yves Orton <demerphq@gmail.com>
Date: Sun, 10 Sep 2017 10:59:05 +0200
Subject: [PATCH] fix #132017 - OPFAIL insert needs to set flags to 0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
why reginsert doesnt do this stuff I dont know.
Petr Písař: Ported to 5.26.1.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
regcomp.c | 6 +++++-
t/re/pat.t | 5 ++++-
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/regcomp.c b/regcomp.c
index b2de7f0..1df3df8 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -11724,6 +11724,7 @@ S_regpiece(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
if (max < min) { /* If can't match, warn and optimize to fail
unconditionally */
reginsert(pRExC_state, OPFAIL, orig_emit, depth+1);
+ orig_emit->flags = 0;
if (PASS2) {
ckWARNreg(RExC_parse, "Quantifier {n,m} with n > m can't match");
NEXT_OFF(orig_emit)= regarglen[OPFAIL] + NODE_STEP_REGNODE;
@@ -19343,8 +19344,11 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
/* add on the verb argument if there is one */
if ( ( k == VERB || OP(o) == ACCEPT || OP(o) == OPFAIL ) && o->flags) {
- Perl_sv_catpvf(aTHX_ sv, ":%" SVf,
+ if ( ARG(o) )
+ Perl_sv_catpvf(aTHX_ sv, ":%" SVf,
SVfARG((MUTABLE_SV(progi->data->data[ ARG( o ) ]))));
+ else
+ sv_catpvs(sv, ":NULL");
}
#else
PERL_UNUSED_CONTEXT;
diff --git a/t/re/pat.t b/t/re/pat.t
index 2510eab..dda2a5a 100644
--- a/t/re/pat.t
+++ b/t/re/pat.t
@@ -23,7 +23,7 @@ BEGIN {
skip_all('no re module') unless defined &DynaLoader::boot_DynaLoader;
skip_all_without_unicode_tables();
-plan tests => 838; # Update this when adding/deleting tests.
+plan tests => 839; # Update this when adding/deleting tests.
run_tests() unless caller;
@@ -1921,6 +1921,9 @@ EOP
pos($text) = 3;
ok(scalar($text !~ m{(~*=[a-z]=)}g), "RT #131575");
}
+ {
+ fresh_perl_is('"AA" =~ m/AA{1,0}/','',{},"handle OPFAIL insert properly");
+ }
} # End of sub run_tests
--
2.13.6

View File

@ -0,0 +1,105 @@
From dc1f8f6b581a8e4efbb782398ab3e7c3a52b062f Mon Sep 17 00:00:00 2001
From: Karl Williamson <khw@cpan.org>
Date: Tue, 8 May 2018 12:13:18 -0600
Subject: [PATCH] PATCH: [perl #133185] Infinite loop in qr//
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This loop was inadvertently introduced as part of patches to fix
(perl #132227 CVE-2018-6797] heap-buffer-overflow". The commit in 5.27
responsible was f8fb8615ddc5a80e3bbd4386a8914497f921b62d.
To be vulnerable, the pattern must start out as /d (hence no use 5.012
or higher), and then there must be something that implicitly forces /u
(which the \pp does in the test case added by this patch), and then
(?aa), and then the code point \xDF. (German Sharp S). The /i must be
in effect by the time the DF is encountered, but it needn't come in the
(?aa) which the test does.
The problem is that the conditional that is testing that we switched
away from /d rules is assuming that this happened during the
construction of the current EXACTFish node. The comments I wrote
indicate this assumption. But this example shows that the switch can
come before this node started getting constructed, and so it loops.
The patch explicitly saves the state at the beginning of this node's
construction, and only retries if it changed during that construction.
Therefore the next time through, it will see that it hasn't changed
since the previous time, and won't loop.
Petr Písař: Ported to 5.26.2 from:
commit 0b9cb33b146b3eb55634853f883a880771dd1413
Author: Karl Williamson <khw@cpan.org>
Date: Tue May 8 12:13:18 2018 -0600
PATCH: [perl #133185] Infinite loop in qr//
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
regcomp.c | 10 +++++++++-
t/re/speed.t | 5 ++++-
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/regcomp.c b/regcomp.c
index 845e660..18fa465 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -13100,6 +13100,10 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
bool maybe_exactfu = PASS2
&& (node_type == EXACTF || node_type == EXACTFL);
+ /* To see if RExC_uni_semantics changes during parsing of the node.
+ * */
+ bool uni_semantics_at_node_start;
+
/* If a folding node contains only code points that don't
* participate in folds, it can be changed into an EXACT node,
* which allows the optimizer more things to look for */
@@ -13147,6 +13151,8 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
|| UTF8_IS_INVARIANT(UCHARAT(RExC_parse))
|| UTF8_IS_START(UCHARAT(RExC_parse)));
+ uni_semantics_at_node_start = RExC_uni_semantics;
+
/* Here, we have a literal character. Find the maximal string of
* them in the input that we can fit into a single EXACTish node.
* We quit at the first non-literal or when the node gets full */
@@ -13550,7 +13556,9 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
* didn't think it needed to reparse. But this
* sharp s now does indicate the need for
* reparsing. */
- if (RExC_uni_semantics) {
+ if ( uni_semantics_at_node_start
+ != RExC_uni_semantics)
+ {
p = oldp;
goto loopdone;
}
diff --git a/t/re/speed.t b/t/re/speed.t
index 4a4830f..9a57de1 100644
--- a/t/re/speed.t
+++ b/t/re/speed.t
@@ -24,7 +24,7 @@ BEGIN {
skip_all('no re module') unless defined &DynaLoader::boot_DynaLoader;
skip_all_without_unicode_tables();
-plan tests => 58; #** update watchdog timeouts proportionally when adding tests
+plan tests => 59; #** update watchdog timeouts proportionally when adding tests
use strict;
use warnings;
@@ -156,6 +156,9 @@ PROG
ok( $elapsed <= 1, "should not COW on long string with substr and m//g");
}
+ # [perl #133185] Infinite loop
+ like("!\xdf", eval 'qr/\pp(?aai)\xdf/',
+ 'Compiling qr/\pp(?aai)\xdf/ doesn\'t loop');
} # End of sub run_tests
--
2.14.3

View File

@ -1,4 +1,4 @@
From 4f08ed80a1ad3deb06ce5d8d20cc2d176dcbced0 Mon Sep 17 00:00:00 2001
From 07ebe9c4fb1028d17e61caabe8c15abd0cd48983 Mon Sep 17 00:00:00 2001
From: Yves Orton <demerphq@gmail.com>
Date: Thu, 29 Jun 2017 11:31:14 +0200
Subject: [PATCH] Parse caret vars with subscripts the same as normal vars
@ -16,6 +16,8 @@ which Sawyer then ruled was a bug.
So this patch makes "${^CAPTURE[0]}" (and "${^CAPTURE [0]}" [hi
abigial]) work the same as they would if the var was called @foo.
Petr Písař: Ported to 5.26.2-RC1.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/base/lex.t | 28 +++++++++++++++++++++++++++-
@ -23,14 +25,14 @@ Signed-off-by: Petr Písař <ppisar@redhat.com>
2 files changed, 52 insertions(+), 22 deletions(-)
diff --git a/t/base/lex.t b/t/base/lex.t
index e154aca..89d46df 100644
index 99fd3bb..ae17bbd 100644
--- a/t/base/lex.t
+++ b/t/base/lex.t
@@ -1,6 +1,6 @@
#!./perl
-print "1..109\n";
+print "1..116\n";
-print "1..112\n";
+print "1..119\n";
$x = 'x';
@ -68,10 +70,10 @@ index e154aca..89d46df 100644
# Now let's make sure that caret variables are all forced into the main package.
package Someother;
diff --git a/toke.c b/toke.c
index 0dcf623..ace92e3 100644
index ee9c464..aff785b 100644
--- a/toke.c
+++ b/toke.c
@@ -9352,19 +9352,36 @@ S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni)
@@ -9416,19 +9416,36 @@ S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni)
bool skip;
char *s2;
/* If we were processing {...} notation then... */
@ -116,7 +118,7 @@ index 0dcf623..ace92e3 100644
if (ckWARN(WARN_AMBIGUOUS) && keyword(dest, d - dest, 0)) {
const char * const brack =
(const char *)
@@ -9383,19 +9400,6 @@ S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni)
@@ -9447,19 +9464,6 @@ S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni)
return s;
}
}
@ -137,5 +139,5 @@ index 0dcf623..ace92e3 100644
if ( !tmp_copline )
tmp_copline = CopLINE(PL_curcop);
--
2.9.4
2.14.3

View File

@ -1,4 +1,4 @@
From 9b7d3fdf8458e3581b4fb3a6c557b4db4e1f31e8 Mon Sep 17 00:00:00 2001
From edea384e57453b0a62de58445eed1fded18c1cca Mon Sep 17 00:00:00 2001
From: Yves Orton <demerphq@gmail.com>
Date: Thu, 29 Jun 2017 13:20:49 +0200
Subject: [PATCH] add an additional test for whitespace tolerance in caret
@ -7,20 +7,22 @@ MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Petr Písař: Ported to 5.26.2-RC1.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/base/lex.t | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/t/base/lex.t b/t/base/lex.t
index 89d46df..de33e7a 100644
index ae17bbd..414aa1f 100644
--- a/t/base/lex.t
+++ b/t/base/lex.t
@@ -1,6 +1,6 @@
#!./perl
-print "1..116\n";
+print "1..117\n";
-print "1..119\n";
+print "1..120\n";
$x = 'x';
@ -39,5 +41,5 @@ index 89d46df..de33e7a 100644
print "not " if "${^TEST}[0]" ne "splat[0]";
print "ok $test\n"; $test++;
--
2.9.4
2.14.3

View File

@ -1,4 +1,4 @@
From cbe3025c652289aee2f2f4145f882be5b33a27ee Mon Sep 17 00:00:00 2001
From 3e6e57e89f298f450cbe14c61609f08fc01bf233 Mon Sep 17 00:00:00 2001
From: Zefram <zefram@fysh.org>
Date: Sat, 16 Dec 2017 05:33:20 +0000
Subject: [PATCH] perform system() arg processing before fork
@ -14,7 +14,7 @@ $$, and in that case it should also happen in the parent process.
Therefore reduce the argument scalars to strings first thing in pp_system.
Fixes [perl #121105].
Petr Písař: Ported to 5.26.1 from
Petr Písař: Ported to 5.26.2-RC1 from
64def2aeaeb63f92dadc6dfa33486c1d7b311963.
Signed-off-by: Petr Písař <ppisar@redhat.com>
@ -53,19 +53,19 @@ index 87961f1..07e552a 100644
}
PERL_FLUSHALL_FOR_CHILD;
diff --git a/t/op/exec.t b/t/op/exec.t
index 1155439..45237e9 100644
index 237388b..e29de82 100644
--- a/t/op/exec.t
+++ b/t/op/exec.t
@@ -36,7 +36,7 @@ $ENV{LANGUAGE} = 'C'; # Ditto in GNU.
my $Is_VMS = $^O eq 'VMS';
my $Is_Win32 = $^O eq 'MSWin32';
-plan(tests => 25);
+plan(tests => 28);
-plan(tests => 34);
+plan(tests => 37);
my $Perl = which_perl();
@@ -156,6 +156,19 @@ TODO: {
@@ -177,6 +177,19 @@ TODO: {
"exec failure doesn't terminate process");
}
@ -86,5 +86,5 @@ index 1155439..45237e9 100644
exec $Perl, '-le', qq{${quote}print 'ok $test - exec PROG, LIST'${quote}};
fail("This should never be reached if the exec() worked");
--
2.13.6
2.14.3

View File

@ -1,299 +0,0 @@
From 99b847695211f825df6299aa9da91f9494f741e2 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Thu, 1 Jun 2017 15:11:27 +1000
Subject: [PATCH] [perl #131221] improve duplication of :via handles
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Previously duplication (as with open ... ">&...") would fail
unless the user supplied a GETARG, which wasn't documented, and
resulted in an attempt to free and unreferened scalar if supplied.
Cloning on thread creation was simply broken.
We now handle GETARG correctly, and provide a useful default if it
returns nothing.
Cloning on thread creation now duplicates the appropriate parts of the
parent thread's handle.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
MANIFEST | 1 +
ext/PerlIO-via/t/thread.t | 73 +++++++++++++++++++++++++++++++++++++++++++++++
ext/PerlIO-via/t/via.t | 56 +++++++++++++++++++++++++++++++++++-
ext/PerlIO-via/via.pm | 2 +-
ext/PerlIO-via/via.xs | 55 +++++++++++++++++++++++++++++++----
5 files changed, 179 insertions(+), 8 deletions(-)
create mode 100644 ext/PerlIO-via/t/thread.t
diff --git a/MANIFEST b/MANIFEST
index 8c4950e..d39f992 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -4056,6 +4056,7 @@ ext/PerlIO-scalar/scalar.xs PerlIO layer for scalars
ext/PerlIO-scalar/t/scalar.t See if PerlIO::scalar works
ext/PerlIO-scalar/t/scalar_ungetc.t Tests for PerlIO layer for scalars
ext/PerlIO-via/hints/aix.pl Hint for PerlIO::via for named architecture
+ext/PerlIO-via/t/thread.t See if PerlIO::via works with threads
ext/PerlIO-via/t/via.t See if PerlIO::via works
ext/PerlIO-via/via.pm PerlIO layer for layers in perl
ext/PerlIO-via/via.xs PerlIO layer for layers in perl
diff --git a/ext/PerlIO-via/t/thread.t b/ext/PerlIO-via/t/thread.t
new file mode 100644
index 0000000..e4358f9
--- /dev/null
+++ b/ext/PerlIO-via/t/thread.t
@@ -0,0 +1,73 @@
+#!perl
+BEGIN {
+ unless (find PerlIO::Layer 'perlio') {
+ print "1..0 # Skip: not perlio\n";
+ exit 0;
+ }
+ require Config;
+ unless ($Config::Config{'usethreads'}) {
+ print "1..0 # Skip -- need threads for this test\n";
+ exit 0;
+ }
+ if (($Config::Config{'extensions'} !~ m!\bPerlIO/via\b!) ){
+ print "1..0 # Skip -- Perl configured without PerlIO::via module\n";
+ exit 0;
+ }
+}
+
+use strict;
+use warnings;
+use threads;
+
+my $tmp = "via$$";
+
+END {
+ 1 while unlink $tmp;
+}
+
+use Test::More tests => 2;
+
+our $push_count = 0;
+
+{
+ open my $fh, ">:via(Test1)", $tmp
+ or die "Cannot open $tmp: $!";
+ $fh->autoflush;
+
+ print $fh "AXAX";
+
+ # previously this would crash
+ threads->create(
+ sub {
+ print $fh "XZXZ";
+ })->join;
+
+ print $fh "BXBX";
+ close $fh;
+
+ open my $in, "<", $tmp;
+ my $line = <$in>;
+ close $in;
+
+ is($line, "AYAYYZYZBYBY", "check thread data delivered");
+
+ is($push_count, 1, "PUSHED not called for dup on thread creation");
+}
+
+package PerlIO::via::Test1;
+
+sub PUSHED {
+ my ($class) = @_;
+ ++$main::push_count;
+ bless {}, $class;
+}
+
+sub WRITE {
+ my ($self, $data, $fh) = @_;
+ $data =~ tr/X/Y/;
+ $fh->autoflush;
+ print $fh $data;
+ return length $data;
+}
+
+
diff --git a/ext/PerlIO-via/t/via.t b/ext/PerlIO-via/t/via.t
index 6787e11..80577df 100644
--- a/ext/PerlIO-via/t/via.t
+++ b/ext/PerlIO-via/t/via.t
@@ -17,7 +17,7 @@ use warnings;
my $tmp = "via$$";
-use Test::More tests => 18;
+use Test::More tests => 26;
my $fh;
my $a = join("", map { chr } 0..255) x 10;
@@ -84,6 +84,60 @@ is( $obj, 'Foo', 'search for package Foo' );
open $fh, '<:via(Bar)', "bar";
is( $obj, 'PerlIO::via::Bar', 'search for package PerlIO::via::Bar' );
+{
+ # [perl #131221]
+ ok(open(my $fh1, ">", $tmp), "open $tmp");
+ ok(binmode($fh1, ":via(XXX)"), "binmode :via(XXX) onto it");
+ ok(open(my $fh2, ">&", $fh1), "dup it");
+ close $fh1;
+ close $fh2;
+
+ # make sure the old workaround still works
+ ok(open($fh1, ">", $tmp), "open $tmp");
+ ok(binmode($fh1, ":via(YYY)"), "binmode :via(YYY) onto it");
+ ok(open($fh2, ">&", $fh1), "dup it");
+ print $fh2 "XZXZ";
+ close $fh1;
+ close $fh2;
+
+ ok(open($fh1, "<", $tmp), "open $tmp for check");
+ { local $/; $b = <$fh1> }
+ close $fh1;
+ is($b, "XZXZ", "check result is from non-filtering class");
+
+ package PerlIO::via::XXX;
+
+ sub PUSHED {
+ my $class = shift;
+ bless {}, $class;
+ }
+
+ sub WRITE {
+ my ($self, $buffer, $handle) = @_;
+
+ print $handle $buffer;
+ return length($buffer);
+ }
+ package PerlIO::via::YYY;
+
+ sub PUSHED {
+ my $class = shift;
+ bless {}, $class;
+ }
+
+ sub WRITE {
+ my ($self, $buffer, $handle) = @_;
+
+ $buffer =~ tr/X/Y/;
+ print $handle $buffer;
+ return length($buffer);
+ }
+
+ sub GETARG {
+ "XXX";
+ }
+}
+
END {
1 while unlink $tmp;
}
diff --git a/ext/PerlIO-via/via.pm b/ext/PerlIO-via/via.pm
index e477dcc..30083fe 100644
--- a/ext/PerlIO-via/via.pm
+++ b/ext/PerlIO-via/via.pm
@@ -1,5 +1,5 @@
package PerlIO::via;
-our $VERSION = '0.16';
+our $VERSION = '0.17';
require XSLoader;
XSLoader::load();
1;
diff --git a/ext/PerlIO-via/via.xs b/ext/PerlIO-via/via.xs
index 8a7f1fc..61953c8 100644
--- a/ext/PerlIO-via/via.xs
+++ b/ext/PerlIO-via/via.xs
@@ -38,6 +38,8 @@ typedef struct
CV *UTF8;
} PerlIOVia;
+static const MGVTBL PerlIOVia_tag = { 0, 0, 0, 0, 0, 0, 0, 0 };
+
#define MYMethod(x) #x,&s->x
static CV *
@@ -131,8 +133,14 @@ PerlIOVia_pushed(pTHX_ PerlIO * f, const char *mode, SV * arg,
PerlIO_funcs * tab)
{
IV code = PerlIOBase_pushed(aTHX_ f, mode, Nullsv, tab);
+
+ if (SvTYPE(arg) >= SVt_PVMG
+ && mg_findext(arg, PERL_MAGIC_ext, &PerlIOVia_tag)) {
+ return code;
+ }
+
if (code == 0) {
- PerlIOVia *s = PerlIOSelf(f, PerlIOVia);
+ PerlIOVia *s = PerlIOSelf(f, PerlIOVia);
if (!arg) {
if (ckWARN(WARN_LAYER))
Perl_warner(aTHX_ packWARN(WARN_LAYER),
@@ -583,20 +591,55 @@ static SV *
PerlIOVia_getarg(pTHX_ PerlIO * f, CLONE_PARAMS * param, int flags)
{
PerlIOVia *s = PerlIOSelf(f, PerlIOVia);
- PERL_UNUSED_ARG(param);
+ SV *arg;
PERL_UNUSED_ARG(flags);
- return PerlIOVia_method(aTHX_ f, MYMethod(GETARG), G_SCALAR, Nullsv);
+
+ /* During cloning, return an undef token object so that _pushed() knows
+ * that it should not call methods and wait for _dup() to actually dup the
+ * object. */
+ if (param) {
+ SV *sv = newSV(0);
+ sv_magicext(sv, NULL, PERL_MAGIC_ext, &PerlIOVia_tag, 0, 0);
+ return sv;
+ }
+
+ arg = PerlIOVia_method(aTHX_ f, MYMethod(GETARG), G_SCALAR, Nullsv);
+ if (arg) {
+ /* arg is a temp, and PerlIOBase_dup() will explicitly free it */
+ SvREFCNT_inc(arg);
+ }
+ else {
+ arg = newSVpvn(HvNAME(s->stash), HvNAMELEN(s->stash));
+ }
+
+ return arg;
}
static PerlIO *
PerlIOVia_dup(pTHX_ PerlIO * f, PerlIO * o, CLONE_PARAMS * param,
int flags)
{
- if ((f = PerlIOBase_dup(aTHX_ f, o, param, flags))) {
- /* Most of the fields will lazily set themselves up as needed
- stash and obj have been set up by the implied push
+ if ((f = PerlIOBase_dup(aTHX_ f, o, param, flags)) && param) {
+ /* For a non-interpreter dup stash and obj have been set up
+ by the implied push.
+
+ But if this is a clone for a new interpreter we need to
+ translate the objects to their dups.
*/
+
+ PerlIOVia *fs = PerlIOSelf(f, PerlIOVia);
+ PerlIOVia *os = PerlIOSelf(o, PerlIOVia);
+
+ fs->obj = sv_dup_inc(os->obj, param);
+ fs->stash = (HV*)sv_dup((SV*)os->stash, param);
+ fs->var = sv_dup_inc(os->var, param);
+ fs->cnt = os->cnt;
+
+ /* fh, io, cached CVs left as NULL, PerlIOVia_method()
+ will reinitialize them if needed */
}
+ /* for a non-threaded dup fs->obj and stash should be set by _pushed() */
+
return f;
}
--
2.9.4

View File

@ -1,71 +0,0 @@
From 7b3443d31f11c15859593e5b710c301795a6de01 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Thu, 8 Jun 2017 11:06:39 +1000
Subject: [PATCH] [perl #131221] sv_dup/sv_dup_inc are only available under
threads
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
ext/PerlIO-via/via.xs | 42 +++++++++++++++++++++++-------------------
1 file changed, 23 insertions(+), 19 deletions(-)
diff --git a/ext/PerlIO-via/via.xs b/ext/PerlIO-via/via.xs
index 61953c8..d91c685 100644
--- a/ext/PerlIO-via/via.xs
+++ b/ext/PerlIO-via/via.xs
@@ -619,26 +619,30 @@ static PerlIO *
PerlIOVia_dup(pTHX_ PerlIO * f, PerlIO * o, CLONE_PARAMS * param,
int flags)
{
- if ((f = PerlIOBase_dup(aTHX_ f, o, param, flags)) && param) {
- /* For a non-interpreter dup stash and obj have been set up
- by the implied push.
-
- But if this is a clone for a new interpreter we need to
- translate the objects to their dups.
- */
-
- PerlIOVia *fs = PerlIOSelf(f, PerlIOVia);
- PerlIOVia *os = PerlIOSelf(o, PerlIOVia);
-
- fs->obj = sv_dup_inc(os->obj, param);
- fs->stash = (HV*)sv_dup((SV*)os->stash, param);
- fs->var = sv_dup_inc(os->var, param);
- fs->cnt = os->cnt;
-
- /* fh, io, cached CVs left as NULL, PerlIOVia_method()
- will reinitialize them if needed */
+ if ((f = PerlIOBase_dup(aTHX_ f, o, param, flags))) {
+#ifdef USE_ITHREADS
+ if (param) {
+ /* For a non-interpreter dup stash and obj have been set up
+ by the implied push.
+
+ But if this is a clone for a new interpreter we need to
+ translate the objects to their dups.
+ */
+
+ PerlIOVia *fs = PerlIOSelf(f, PerlIOVia);
+ PerlIOVia *os = PerlIOSelf(o, PerlIOVia);
+
+ fs->obj = sv_dup_inc(os->obj, param);
+ fs->stash = (HV*)sv_dup((SV*)os->stash, param);
+ fs->var = sv_dup_inc(os->var, param);
+ fs->cnt = os->cnt;
+
+ /* fh, io, cached CVs left as NULL, PerlIOVia_method()
+ will reinitialize them if needed */
+ }
+#endif
+ /* for a non-threaded dup fs->obj and stash should be set by _pushed() */
}
- /* for a non-threaded dup fs->obj and stash should be set by _pushed() */
return f;
}
--
2.9.4

View File

@ -0,0 +1,57 @@
From 8121278aa8fe72e9e8aca8651c7f1d4fa204ac1d Mon Sep 17 00:00:00 2001
From: Karl Williamson <khw@cpan.org>
Date: Mon, 2 Apr 2018 21:54:59 -0600
Subject: [PATCH] PATCH: [perl #132167] Parse error in regex_sets
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When popping the stack, the code inappropriately also subtracted one
from the result. This is probably left over from an earlier change in
the implementation. The top of the stack contained the correct value;
subtracting was a mistake.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
regcomp.c | 2 +-
t/re/regex_sets.t | 11 +++++++++++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/regcomp.c b/regcomp.c
index 018d5646fc..39ab260efa 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -15689,7 +15689,7 @@ redo_curchar:
* fence. Get rid of it */
fence_ptr = av_pop(fence_stack);
assert(fence_ptr);
- fence = SvIV(fence_ptr) - 1;
+ fence = SvIV(fence_ptr);
SvREFCNT_dec_NN(fence_ptr);
fence_ptr = NULL;
diff --git a/t/re/regex_sets.t b/t/re/regex_sets.t
index e9644bd4e6..e70df81254 100644
--- a/t/re/regex_sets.t
+++ b/t/re/regex_sets.t
@@ -204,6 +204,17 @@ for my $char ("٠", "٥", "٩") {
like("a", qr/$pat/, "/$pat/ compiles and matches 'a'");
}
+{ # [perl #132167]
+ fresh_perl_is('no warnings "experimental::regex_sets";
+ print "c" =~ qr/(?[ ( \p{Uppercase} ) + (\p{Lowercase} - ([a] + [b])) ])/;',
+ 1, {},
+ 'qr/(?[ ( \p{Uppercase} ) + (\p{Lowercase} - ([a] + [b])) ]) compiles and properly matches');
+ fresh_perl_is('no warnings "experimental::regex_sets";
+ print "b" =~ qr/(?[ ( \p{Uppercase} ) + (\p{Lowercase} - ([a] + [b])) ])/;',
+ "", {},
+ 'qr/(?[ ( \p{Uppercase} ) + (\p{Lowercase} - ([a] + [b])) ]) compiles and properly matches');
+}
+
done_testing();
1;
--
2.14.3

View File

@ -0,0 +1,71 @@
From 62e6b70574842d7f2c547d33c85c50228522f685 Mon Sep 17 00:00:00 2001
From: Marc-Philip <marc-philip.werner@sap.com>
Date: Sun, 8 Apr 2018 12:15:29 -0600
Subject: [PATCH] PATCH: [perl #133074] 5.26.1: some coverity fixes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
we have some coverity code scans here. They have found this
uninilialized variable in pp.c and the integer overrun in toke.c.
Though it might be possible that these are false positives (no
reasonable control path gets there), it's good to mute the scan here to
see the real problems easier.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
pp.c | 1 +
toke.c | 8 ++++----
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/pp.c b/pp.c
index 5524131658..d777ae4309 100644
--- a/pp.c
+++ b/pp.c
@@ -3727,6 +3727,7 @@ PP(pp_ucfirst)
if (! slen) { /* If empty */
need = 1; /* still need a trailing NUL */
ulen = 0;
+ *tmpbuf = '\0';
}
else if (DO_UTF8(source)) { /* Is the source utf8? */
doing_utf8 = TRUE;
diff --git a/toke.c b/toke.c
index 3405dc6c89..fc87252bb1 100644
--- a/toke.c
+++ b/toke.c
@@ -9052,7 +9052,7 @@ S_pending_ident(pTHX)
HEK * const stashname = HvNAME_HEK(stash);
SV * const sym = newSVhek(stashname);
sv_catpvs(sym, "::");
- sv_catpvn_flags(sym, PL_tokenbuf+1, tokenbuf_len - 1, (UTF ? SV_CATUTF8 : SV_CATBYTES ));
+ sv_catpvn_flags(sym, PL_tokenbuf+1, tokenbuf_len > 0 ? tokenbuf_len - 1 : 0, (UTF ? SV_CATUTF8 : SV_CATBYTES ));
pl_yylval.opval = newSVOP(OP_CONST, 0, sym);
pl_yylval.opval->op_private = OPpCONST_ENTERED;
if (pit != '&')
@@ -9080,7 +9080,7 @@ S_pending_ident(pTHX)
&& PL_lex_state != LEX_NORMAL
&& !PL_lex_brackets)
{
- GV *const gv = gv_fetchpvn_flags(PL_tokenbuf + 1, tokenbuf_len - 1,
+ GV *const gv = gv_fetchpvn_flags(PL_tokenbuf + 1, tokenbuf_len > 0 ? tokenbuf_len - 1 : 0,
( UTF ? SVf_UTF8 : 0 ) | GV_ADDMG,
SVt_PVAV);
if ((!gv || ((PL_tokenbuf[0] == '@') ? !GvAV(gv) : !GvHV(gv)))
@@ -9097,11 +9097,11 @@ S_pending_ident(pTHX)
/* build ops for a bareword */
pl_yylval.opval = newSVOP(OP_CONST, 0,
newSVpvn_flags(PL_tokenbuf + 1,
- tokenbuf_len - 1,
+ tokenbuf_len > 0 ? tokenbuf_len - 1 : 0,
UTF ? SVf_UTF8 : 0 ));
pl_yylval.opval->op_private = OPpCONST_ENTERED;
if (pit != '&')
- gv_fetchpvn_flags(PL_tokenbuf+1, tokenbuf_len - 1,
+ gv_fetchpvn_flags(PL_tokenbuf+1, tokenbuf_len > 0 ? tokenbuf_len - 1 : 0,
(PL_in_eval ? GV_ADDMULTI : GV_ADD)
| ( UTF ? SVf_UTF8 : 0 ),
((PL_tokenbuf[0] == '$') ? SVt_PV
--
2.14.3

View File

@ -1,80 +0,0 @@
From 36000cd1c47863d8412b285701db7232dd450239 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Wed, 26 Jul 2017 12:04:18 +1000
Subject: [PATCH] (perl #131793) sanely handle PL_linestart > PL_bufptr
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In the test case, scan_ident() ends up fetching another line
(updating PL_linestart), and since in this case we don't
successfully parse ${identifier} s (and PL_bufptr) end up being
before PL_linestart.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/comp/parser_run.t | 9 ++++++++-
toke.c | 19 +++++++++++++++----
2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/t/comp/parser_run.t b/t/comp/parser_run.t
index e74644d3fb..0fca5b2800 100644
--- a/t/comp/parser_run.t
+++ b/t/comp/parser_run.t
@@ -10,7 +10,7 @@ BEGIN {
}
require './test.pl';
-plan(1);
+plan(2);
# [perl #130814] can reallocate lineptr while looking ahead for
# "Missing $ on loop variable" diagnostic.
@@ -24,5 +24,12 @@ syntax error at - line 3, near "foreach m0
Identifier too long at - line 3.
EXPECT
+fresh_perl_is(<<EOS, <<'EXPECT', {}, "linestart before bufptr");
+\${ \xD5eeeeeeeeeeee
+'x
+EOS
+Unrecognized character \xD5; marked by <-- HERE after ${ <-- HERE near column 4 at - line 1.
+EXPECT
+
__END__
# ex: set ts=8 sts=4 sw=4 et:
diff --git a/toke.c b/toke.c
index 6de7d09ea4..3899b729af 100644
--- a/toke.c
+++ b/toke.c
@@ -5158,12 +5158,23 @@ Perl_yylex(pTHX)
else {
c = Perl_form(aTHX_ "\\x%02X", (unsigned char)*s);
}
- len = UTF ? Perl_utf8_length(aTHX_ (U8 *) PL_linestart, (U8 *) s) : (STRLEN) (s - PL_linestart);
- if (len > UNRECOGNIZED_PRECEDE_COUNT) {
- d = UTF ? (char *) utf8_hop_back((U8 *) s, -UNRECOGNIZED_PRECEDE_COUNT, (U8 *)PL_linestart) : s - UNRECOGNIZED_PRECEDE_COUNT;
- } else {
+
+ if (s >= PL_linestart) {
d = PL_linestart;
}
+ else {
+ /* somehow (probably due to a parse failure), PL_linestart has advanced
+ * pass PL_bufptr, get a reasonable beginning of line
+ */
+ d = s;
+ while (d > SvPVX(PL_linestr) && d[-1] && d[-1] != '\n')
+ --d;
+ }
+ len = UTF ? Perl_utf8_length(aTHX_ (U8 *) d, (U8 *) s) : (STRLEN) (s - d);
+ if (len > UNRECOGNIZED_PRECEDE_COUNT) {
+ d = UTF ? (char *) utf8_hop_back((U8 *) s, -UNRECOGNIZED_PRECEDE_COUNT, (U8 *)d) : s - UNRECOGNIZED_PRECEDE_COUNT;
+ }
+
Perl_croak(aTHX_ "Unrecognized character %s; marked by <-- HERE after %" UTF8f "<-- HERE near column %d", c,
UTF8fARG(UTF, (s - d), d),
(int) len + 1);
--
2.13.6

View File

@ -1,152 +0,0 @@
From d8b61909479178ddb668ad385988877d26f202f2 Mon Sep 17 00:00:00 2001
From: James E Keenan <jkeenan@cpan.org>
Date: Thu, 31 Aug 2017 22:57:06 -0400
Subject: [PATCH] Term::ReadLine generates empty &STDERR files
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Revert to 2-arg open in one case.
If /dev/tty is inaccessible, redirecting file handles to STDERR:
open (my $fh, ">&STDERR))
... cannot be done as a 3 arg open or it'll actually try to write to that
file.
Bump $Term::ReadLine::VERSION.
Add unit test for RT #132008
For: RT #132008
(cherry picked from commit e4dc68d725b19f46c6fca9423e6e7a0eaeff47f4)
Signed-off-by: Nicolas R <atoomic@cpan.org>
xx
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
MANIFEST | 1 +
dist/Term-ReadLine/lib/Term/ReadLine.pm | 17 +++++++++-----
dist/Term-ReadLine/t/ReadLine-STDERR.t | 41 +++++++++++++++++++++++++++++++++
3 files changed, 53 insertions(+), 6 deletions(-)
create mode 100644 dist/Term-ReadLine/t/ReadLine-STDERR.t
diff --git a/MANIFEST b/MANIFEST
index ad24a2d28b..180fd4f543 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -3669,6 +3669,7 @@ dist/Term-ReadLine/lib/Term/ReadLine.pm Stub readline library
dist/Term-ReadLine/t/AE.t See if Term::ReadLine works
dist/Term-ReadLine/t/AETk.t See if Term::ReadLine works
dist/Term-ReadLine/t/ReadLine.t See if Term::ReadLine works
+dist/Term-ReadLine/t/ReadLine-STDERR.t See if Term::ReadLine works
dist/Term-ReadLine/t/Tk.t See if Term::ReadLine works
dist/Test/lib/Test.pm A simple framework for writing test scripts
dist/Test/t/05_about_verbose.t See if Test works
diff --git a/dist/Term-ReadLine/lib/Term/ReadLine.pm b/dist/Term-ReadLine/lib/Term/ReadLine.pm
index 88d5a75877..e00fb376cd 100644
--- a/dist/Term-ReadLine/lib/Term/ReadLine.pm
+++ b/dist/Term-ReadLine/lib/Term/ReadLine.pm
@@ -229,12 +229,17 @@ sub readline {
}
sub addhistory {}
+# used for testing purpose
+sub devtty { return '/dev/tty' }
+
sub findConsole {
my $console;
my $consoleOUT;
- if ($^O ne 'MSWin32' and -e "/dev/tty") {
- $console = "/dev/tty";
+ my $devtty = devtty();
+
+ if ($^O ne 'MSWin32' and -e $devtty) {
+ $console = $devtty;
} elsif ($^O eq 'MSWin32' or $^O eq 'msys' or -e "con") {
$console = 'CONIN$';
$consoleOUT = 'CONOUT$';
@@ -248,7 +253,7 @@ sub findConsole {
$consoleOUT = $console unless defined $consoleOUT;
$console = "&STDIN" unless defined $console;
- if ($console eq "/dev/tty" && !open(my $fh, "<", $console)) {
+ if ($console eq $devtty && !open(my $fh, "<", $console)) {
$console = "&STDIN";
undef($consoleOUT);
}
@@ -266,11 +271,11 @@ sub new {
if (@_==2) {
my($console, $consoleOUT) = $_[0]->findConsole;
-
# the Windows CONIN$ needs GENERIC_WRITE mode to allow
# a SetConsoleMode() if we end up using Term::ReadKey
open FIN, (( $^O eq 'MSWin32' && $console eq 'CONIN$' ) ? '+<' : '<' ), $console;
- open FOUT,'>', $consoleOUT;
+ # RT #132008: Still need 2-arg open here
+ open FOUT,">$consoleOUT";
#OUT->autoflush(1); # Conflicts with debugger?
my $sel = select(FOUT);
@@ -319,7 +324,7 @@ sub Features { \%features }
package Term::ReadLine; # So late to allow the above code be defined?
-our $VERSION = '1.16';
+our $VERSION = '1.17';
my ($which) = exists $ENV{PERL_RL} ? split /\s+/, $ENV{PERL_RL} : undef;
if ($which) {
diff --git a/dist/Term-ReadLine/t/ReadLine-STDERR.t b/dist/Term-ReadLine/t/ReadLine-STDERR.t
new file mode 100644
index 0000000000..f7aa2df925
--- /dev/null
+++ b/dist/Term-ReadLine/t/ReadLine-STDERR.t
@@ -0,0 +1,41 @@
+#!./perl -w
+use strict;
+
+use Test::More;
+
+## unit test for RT 132008 - https://rt.perl.org/Ticket/Display.html?id=132008
+
+if ( $^O eq 'MSWin32' || !-e q{/dev/tty} ) {
+ plan skip_all => "Test not tested on windows or when /dev/tty do not exists";
+}
+else {
+ plan tests => 9;
+}
+
+if ( -e q[&STDERR] ) {
+ note q[Removing existing file &STDERR];
+ unlink q[&STDERR] or die q{Cannot remove existing file &STDERR [probably created from a previous run]};
+}
+
+use_ok('Term::ReadLine');
+can_ok( 'Term::ReadLine::Stub', qw{new devtty findConsole} );
+
+is( Term::ReadLine->devtty(), q{/dev/tty} );
+my @out = Term::ReadLine::Stub::findConsole();
+is_deeply \@out, [ q{/dev/tty}, q{/dev/tty} ], "findConsole is using /dev/tty";
+
+{
+ no warnings 'redefine';
+ my $donotexist = q[/this/should/not/exist/hopefully];
+
+ ok !-e $donotexist, "File $donotexist does not exist";
+ local *Term::ReadLine::Stub::devtty = sub { $donotexist };
+ is( Term::ReadLine->devtty(), $donotexist, "devtty mocked" );
+
+ my @out = Term::ReadLine::Stub::findConsole();
+ is_deeply \@out, [ q{&STDIN}, q{&STDERR} ], "findConsole is using /dev/tty" or diag explain \@out;
+
+ ok !-e q[&STDERR], 'file &STDERR do not exist before Term::ReadLine call';
+ my $tr = Term::ReadLine->new('whatever');
+ ok !-e q[&STDERR], 'file &STDERR was not created by mistake';
+}
--
2.13.6

View File

@ -1,73 +0,0 @@
From 1d217c696857b2bf41d87a7e927c43d20cc556e5 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Tue, 19 Sep 2017 17:40:52 +1000
Subject: [PATCH] (perl #132008) make sure the test behaves without a tty
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The test is intended to test how Term::ReadLine behaves without a tty
and mocks up an invalid tty.
Unfortunately some of the checks it does fail if the test starts without
a tty.
Modified the test to handle the lack of a tty.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
dist/Term-ReadLine/t/ReadLine-STDERR.t | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/dist/Term-ReadLine/t/ReadLine-STDERR.t b/dist/Term-ReadLine/t/ReadLine-STDERR.t
index f7aa2df925..2bdf799f42 100644
--- a/dist/Term-ReadLine/t/ReadLine-STDERR.t
+++ b/dist/Term-ReadLine/t/ReadLine-STDERR.t
@@ -6,7 +6,7 @@ use Test::More;
## unit test for RT 132008 - https://rt.perl.org/Ticket/Display.html?id=132008
if ( $^O eq 'MSWin32' || !-e q{/dev/tty} ) {
- plan skip_all => "Test not tested on windows or when /dev/tty do not exists";
+ plan skip_all => "Not tested on windows or when /dev/tty does not exist";
}
else {
plan tests => 9;
@@ -19,21 +19,29 @@ if ( -e q[&STDERR] ) {
use_ok('Term::ReadLine');
can_ok( 'Term::ReadLine::Stub', qw{new devtty findConsole} );
-
-is( Term::ReadLine->devtty(), q{/dev/tty} );
-my @out = Term::ReadLine::Stub::findConsole();
-is_deeply \@out, [ q{/dev/tty}, q{/dev/tty} ], "findConsole is using /dev/tty";
+is( Term::ReadLine->devtty(), q{/dev/tty}, "check sub devtty" );
+SKIP:
+{
+ open my $tty, "<", Term::ReadLine->devtty()
+ or skip "Cannot open tty", 1;
+ -t $tty
+ or skip "No tty found, so findConsole() won't return /dev/tty", 1;
+ my @out = Term::ReadLine::Stub::findConsole();
+ is_deeply \@out, [ q{/dev/tty}, q{/dev/tty} ], "findConsole is using /dev/tty";
+}
{
no warnings 'redefine';
my $donotexist = q[/this/should/not/exist/hopefully];
ok !-e $donotexist, "File $donotexist does not exist";
- local *Term::ReadLine::Stub::devtty = sub { $donotexist };
+ # double mention to prevent warning
+ local *Term::ReadLine::Stub::devtty =
+ *Term::ReadLine::Stub::devtty = sub { $donotexist };
is( Term::ReadLine->devtty(), $donotexist, "devtty mocked" );
my @out = Term::ReadLine::Stub::findConsole();
- is_deeply \@out, [ q{&STDIN}, q{&STDERR} ], "findConsole is using /dev/tty" or diag explain \@out;
+ is_deeply \@out, [ q{&STDIN}, q{&STDERR} ], "findConsole isn't using /dev/tty" or diag explain \@out;
ok !-e q[&STDERR], 'file &STDERR do not exist before Term::ReadLine call';
my $tr = Term::ReadLine->new('whatever');
--
2.13.6

View File

@ -1,92 +0,0 @@
From 57bd660029d94312ca4eb88993889d981f41b484 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Thu, 24 Aug 2017 15:52:33 +1000
Subject: [PATCH] (perl #131954) don't initialize mark before a possible move
of the stack
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
pp.c | 4 +++-
t/op/list.t | 42 +++++++++++++++++++++++++++++++++++++++++-
2 files changed, 44 insertions(+), 2 deletions(-)
diff --git a/pp.c b/pp.c
index ae6d9c94d1..4b1ccbba80 100644
--- a/pp.c
+++ b/pp.c
@@ -5104,9 +5104,11 @@ PP(pp_list)
{
I32 markidx = POPMARK;
if (GIMME_V != G_ARRAY) {
- SV **mark = PL_stack_base + markidx;
+ /* don't initialize mark here, EXTEND() may move the stack */
+ SV **mark;
dSP;
EXTEND(SP, 1); /* in case no arguments, as in @empty */
+ mark = PL_stack_base + markidx;
if (++MARK <= SP)
*MARK = *SP; /* unwanted list, return last item */
else
diff --git a/t/op/list.t b/t/op/list.t
index 3f9487b96f..2acb03a321 100644
--- a/t/op/list.t
+++ b/t/op/list.t
@@ -6,7 +6,7 @@ BEGIN {
set_up_inc(qw(. ../lib));
}
-plan( tests => 71 );
+plan( tests => 72 );
@foo = (1, 2, 3, 4);
cmp_ok($foo[0], '==', 1, 'first elem');
@@ -228,3 +228,43 @@ ok(($0[()[()]],1), "[perl #126193] list slice with zero indexes");
@x;
pass('no panic'); # panics only under DEBUGGING
}
+
+fresh_perl_is(<<'EOS', "", {}, "[perl #131954] heap use after free in pp_list");
+#!./perl
+BEGIN {
+my $bar = "bar";
+
+sub test_no_error {
+ eval $_[0];
+}
+
+test_no_error($_) for split /\n/,
+q[ x
+ definfoo, $bar;
+ x
+ x
+ x
+ grep((not $bar, $bar, $bar), $bar);
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ x
+ ];
+}
+EOS
--
2.13.6

View File

@ -0,0 +1,127 @@
From fed9fe5b48ccdffef9065a03c12c237cc7418de6 Mon Sep 17 00:00:00 2001
From: Zefram <zefram@fysh.org>
Date: Fri, 16 Feb 2018 17:20:34 +0000
Subject: [PATCH] don't clobber file bytes in :encoding layer
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The PerlIO::encoding layer, when used on input, was creating an SvLEN==0
scalar pointing into the byte buffer, to pass to the ->decode method
of the encoding object. Since the method mutates this scalar, for some
encodings this led to mutating the byte buffer, and depending on where
it came from that might be something visible elsewhere that should not
be mutated. Remove the code for the SvLEN==0 scalar, instead always
using the alternate code that would copy the bytes into a separate buffer
owned by the scalar. Fixes [perl #132833].
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
ext/PerlIO-encoding/encoding.pm | 2 +-
ext/PerlIO-encoding/encoding.xs | 43 ++++++++++------------------------------
ext/PerlIO-encoding/t/encoding.t | 12 ++++++++++-
3 files changed, 22 insertions(+), 35 deletions(-)
diff --git a/ext/PerlIO-encoding/encoding.pm b/ext/PerlIO-encoding/encoding.pm
index 08d2df4713..3d740b181a 100644
--- a/ext/PerlIO-encoding/encoding.pm
+++ b/ext/PerlIO-encoding/encoding.pm
@@ -1,7 +1,7 @@
package PerlIO::encoding;
use strict;
-our $VERSION = '0.25';
+our $VERSION = '0.26';
our $DEBUG = 0;
$DEBUG and warn __PACKAGE__, " called by ", join(", ", caller), "\n";
diff --git a/ext/PerlIO-encoding/encoding.xs b/ext/PerlIO-encoding/encoding.xs
index bb4754f3d9..941d786266 100644
--- a/ext/PerlIO-encoding/encoding.xs
+++ b/ext/PerlIO-encoding/encoding.xs
@@ -307,42 +307,19 @@ PerlIOEncode_fill(pTHX_ PerlIO * f)
goto end_of_file;
}
}
- if (SvCUR(e->dataSV)) {
- /* something left over from last time - create a normal
- SV with new data appended
- */
- if (use + SvCUR(e->dataSV) > e->base.bufsiz) {
- if (e->flags & NEEDS_LINES) {
- /* Have to grow buffer */
- e->base.bufsiz = use + SvCUR(e->dataSV);
- PerlIOEncode_get_base(aTHX_ f);
- }
- else {
- use = e->base.bufsiz - SvCUR(e->dataSV);
- }
- }
- sv_catpvn(e->dataSV,(char*)ptr,use);
- }
- else {
- /* Create a "dummy" SV to represent the available data from layer below */
- if (SvLEN(e->dataSV) && SvPVX_const(e->dataSV)) {
- Safefree(SvPVX_mutable(e->dataSV));
- }
- if (use > (SSize_t)e->base.bufsiz) {
- if (e->flags & NEEDS_LINES) {
- /* Have to grow buffer */
- e->base.bufsiz = use;
- PerlIOEncode_get_base(aTHX_ f);
- }
- else {
- use = e->base.bufsiz;
+ if (!SvCUR(e->dataSV))
+ SvPVCLEAR(e->dataSV);
+ if (use + SvCUR(e->dataSV) > e->base.bufsiz) {
+ if (e->flags & NEEDS_LINES) {
+ /* Have to grow buffer */
+ e->base.bufsiz = use + SvCUR(e->dataSV);
+ PerlIOEncode_get_base(aTHX_ f);
}
+ else {
+ use = e->base.bufsiz - SvCUR(e->dataSV);
}
- SvPV_set(e->dataSV, (char *) ptr);
- SvLEN_set(e->dataSV, 0); /* Hands off sv.c - it isn't yours */
- SvCUR_set(e->dataSV,use);
- SvPOK_only(e->dataSV);
}
+ sv_catpvn(e->dataSV,(char*)ptr,use);
SvUTF8_off(e->dataSV);
PUSHMARK(sp);
XPUSHs(e->enc);
diff --git a/ext/PerlIO-encoding/t/encoding.t b/ext/PerlIO-encoding/t/encoding.t
index 088f89ee20..41cefcb137 100644
--- a/ext/PerlIO-encoding/t/encoding.t
+++ b/ext/PerlIO-encoding/t/encoding.t
@@ -16,7 +16,7 @@ BEGIN {
require "../../t/charset_tools.pl";
}
-use Test::More tests => 24;
+use Test::More tests => 27;
my $grk = "grk$$";
my $utf = "utf$$";
@@ -231,6 +231,16 @@ is $x, "To hymn him who heard her herd herd\n",
} # SKIP
+# decoding shouldn't mutate the original bytes [perl #132833]
+{
+ my $b = "a\0b\0\n\0";
+ open my $fh, "<:encoding(UTF16-LE)", \$b or die;
+ is scalar(<$fh>), "ab\n";
+ is $b, "a\0b\0\n\0";
+ close $fh or die;
+ is $b, "a\0b\0\n\0";
+}
+
END {
1 while unlink($grk, $utf, $fail1, $fail2, $russki, $threebyte);
}
--
2.14.3

View File

@ -0,0 +1,68 @@
From 823ba440369100de3f2693420a3887a645a57d28 Mon Sep 17 00:00:00 2001
From: David Mitchell <davem@iabyn.com>
Date: Wed, 7 Mar 2018 09:27:26 +0000
Subject: [PATCH] fix line numbers in multi-line s///
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
my commit v5.25.6-230-g6432a58, "Eliminate SVrepl_EVAL and SvEVALED()",
introduced a regression: __LINE__ no longer took account of multiple
lines in the s///.
Now fixed.
Spotted by Abigail.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/re/subst.t | 12 +++++++++++-
toke.c | 2 +-
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/t/re/subst.t b/t/re/subst.t
index b9b9939b11..dd62e95ee6 100644
--- a/t/re/subst.t
+++ b/t/re/subst.t
@@ -11,7 +11,7 @@ BEGIN {
require './loc_tools.pl';
}
-plan(tests => 275);
+plan(tests => 276);
$_ = 'david';
$a = s/david/rules/r;
@@ -1163,6 +1163,16 @@ __EOF__
pass("RT #130188");
}
+# RT #131930
+# a multi-line s/// wasn't resetting the cop_line correctly
+{
+ my $l0 = __LINE__;
+ my $s = "a";
+ $s =~ s[a]
+ [b];
+ my $lines = __LINE__ - $l0;
+ is $lines, 4, "RT #131930";
+}
diff --git a/toke.c b/toke.c
index 9dbad98408..0ef33415c0 100644
--- a/toke.c
+++ b/toke.c
@@ -9884,7 +9884,7 @@ S_scan_subst(pTHX_ char *start)
* the NVX field indicates how many src code lines the replacement
* spreads over */
sv_upgrade(PL_parser->lex_sub_repl, SVt_PVNV);
- ((XPVNV*)SvANY(PL_parser->lex_sub_repl))->xnv_u.xnv_lines = 0;
+ ((XPVNV*)SvANY(PL_parser->lex_sub_repl))->xnv_u.xnv_lines = linediff;
((XPVIV*)SvANY(PL_parser->lex_sub_repl))->xiv_u.xivu_eval_seen =
cBOOL(es);
}
--
2.14.3

105
perl.spec
View File

@ -1,4 +1,4 @@
%global perl_version 5.26.1
%global perl_version 5.26.2
%global perl_epoch 4
%global perl_arch_stem -thread-multi
%global perl_archname %{_arch}-%{_os}%{perl_arch_stem}
@ -55,7 +55,7 @@ Name: perl
# cpan/Unicode-Collate/Collate/allkeys.txt: Unicode
# lib/unicore: UCD
# ext/SDBM_File/sdbm.{c,h}: Public domain
# regexec.c, regcomp.c: HSLR
# regexec.c, regcomp.c: HSRL
# cpan/Locale-Maketext-Simple/lib/Locale/Maketext/Simple.pm: MIT (with
# exception for Perl)
# time64.c: MIT
@ -81,7 +81,7 @@ License: GPL+ or Artistic
Epoch: %{perl_epoch}
Version: %{perl_version}
# release number must be even higher, because dual-lived modules will be broken otherwise
Release: 409%{?dist}
Release: 412%{?dist}
Summary: Practical Extraction and Report Language
Url: http://www.perl.org/
Source0: http://www.cpan.org/src/5.0/perl-%{perl_version}.tar.bz2
@ -146,11 +146,6 @@ Patch30: perl-5.22.1-Replace-EU-MM-dependnecy-with-EU-MM-Utils-in-IPC-Cmd
# in upstream after 5.27.0
Patch31: perl-5.27.0-perl-131211-fixup-File-Glob-degenerate-matching.patch
# Fix cloning :via handles on thread creation, RT#131221,
# in upstream after 5.27.0
Patch34: perl-5.27.0-perl-131221-improve-duplication-of-via-handles.patch
Patch35: perl-5.27.0-perl-131221-sv_dup-sv_dup_inc-are-only-available-und.patch
# Fix glob UTF-8 flag on a glob reassignment, RT#131263,
# in upstream after 5.27.0
Patch36: perl-5.26.0-perl-131263-clear-the-UTF8-flag-on-a-glob-if-it-isn-.patch
@ -170,8 +165,8 @@ Patch46: perl-5.26.0-t-op-hash.t-fixup-intermittently-failing-test.patch
# Parse caret variables with subscripts as normal variables inside ${...}
# escaping, RT#131664, in upstream after 5.27.1
Patch47: perl-5.27.1-Parse-caret-vars-with-subscripts-the-same-as-normal-.patch
Patch48: perl-5.27.1-add-an-additional-test-for-whitespace-tolerance-in-c.patch
Patch47: perl-5.26.2-RC1-Parse-caret-vars-with-subscripts-the-same-as-normal-.patch
Patch48: perl-5.26.2-RC1-add-an-additional-test-for-whitespace-tolerance-in-c.patch
# Do not display too many bytes when reporting malformed UTF-8 character,
# in upstream after 5.27.1
@ -199,19 +194,9 @@ Patch56: perl-5.27.2-EU-Constant-avoid-uninit-warning.patch
# Fix unreliable Time-HiRes tests, CPAN RT#122819, in Time-HiRes-1.9746
Patch58: perl-5.26.0-Time-HiRes-Fix-unreliable-t-usleep.t-and-t-utime.t.patch
# Fix an overflow in the lexer when reading a new line, RT#131793,
# in upstream after 5.27.2
Patch59: perl-5.27.2-perl-131793-sanely-handle-PL_linestart-PL_bufptr.patch
# Fix Term::ReadLine not to create spurious &STDERR files, RT#132008,
# in upstream after 5.27.3
Patch60: perl-5.27.3-Term-ReadLine-generates-empty-STDERR-files.patch
Patch61: perl-5.27.3-perl-132008-try-to-prevent-the-similar-mistakes-in-t.patch
Patch62: perl-5.27.3-perl-132008-make-sure-the-test-behaves-without-a-tty.patch
# Fix a crash when a match for inversely repeated group fails, RT#132017,
# in upstream after 5.27.3
Patch63: perl-5.26.1-fix-132017-OPFAIL-insert-needs-to-set-flags-to-0.patch
# Fix an overflow when parsing a character range with no preceding character,
# RT#132245, in upstream after 5.27.5
@ -249,7 +234,7 @@ Patch72: perl-5.27.5-fix-tainting-of-s-with-overloaded-replacement.patch
# Expand system() arguments before a fork, RT#121105,
# in upstream after 5.27.6
Patch73: perl-5.26.1-perform-system-arg-processing-before-fork.patch
Patch73: perl-5.26.2-RC1-perform-system-arg-processing-before-fork.patch
# in upstream after 5.27.7
Patch74: perl-5.27.7-preserve-numericness-of-system-args-on-Win32.patch
Patch75: perl-5.27.7-Reenable-numeric-first-argument-of-system-on-VMS.patch
@ -260,7 +245,7 @@ Patch76: perl-5.26.1-perl-131746-avoid-undefined-behaviour-in-Copy-etc.pa
Patch77: perl-5.27.3-avoid-the-address-of-.-will-always-evaluate-as-.-war.patch
# Conditionalize a fix for an old and long fixed bug
# in libcrypt / glibc, rhbz#1536752
# in libcrypt / glibc, rhbz#1536752, RT#133184, in upstream after 5.27.11
Patch78: perl-5.26.1-guard_old_libcrypt_fix.patch
# Link XS modules to pthread library to fix linking with -z defs,
@ -271,9 +256,24 @@ Patch79: perl-5.27.8-hints-linux-Add-lphtread-to-lddlflags.patch
# in upstream after 5.27.7
Patch80: perl-5.26.1-fix-parsing-of-braced-subscript-after-parens.patch
# Fix a heap use after free when moving a stack, RT#131954,
# in upstream after 5.27.7
Patch81: perl-5.27.7-perl-131954-don-t-initialize-mark-before-a-possible-.patch
# Do not clobber file bytes in :encoding layer, RT#132833,
# in upstream after 5.27.8
Patch81: perl-5.27.8-don-t-clobber-file-bytes-in-encoding-layer.patch
# Fix line numbers in multi-line s///, RT#131930, in upstream after 5.27.9
Patch82: perl-5.27.9-fix-line-numbers-in-multi-line-s.patch
# Fix parsing extended bracketed character classes, RT#132167,
# in upstream after 5.27.10
Patch83: perl-5.27.10-PATCH-perl-132167-Parse-error-in-regex_sets.patch
# Fix a possibly unitialized memory read in the Perl parser, RT#133074,
# in upstream after 5.27.10
Patch84: perl-5.27.10-PATCH-perl-133074-5.26.1-some-coverity-fixes.patch
# Fix an infinite loop in the regular expression compiler, RT#133185,
# in upstream after 5.27.11
Patch85: perl-5.26.2-PATCH-perl-133185-Infinite-loop-in-qr.patch
# Link XS modules to libperl.so with EU::CBuilder on Linux, bug #960048
Patch200: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch
@ -324,7 +324,7 @@ BuildRequires: rsyslog
# compat macro needed for rebuild
%global perl_compat perl(:MODULE_COMPAT_5.26.1)
%global perl_compat perl(:MODULE_COMPAT_5.26.2)
Requires: %perl_compat
Requires: perl-interpreter%{?_isa} = %{perl_epoch}:%{perl_version}-%{release}
@ -472,9 +472,10 @@ Perl utils like "splain" or "perlbug" can be found in perl-utils package.
%package libs
Summary: The libraries for the perl run-time
License: (GPL+ or Artistic) and HSLR and MIT and UCD
License: (GPL+ or Artistic) and HSRL and MIT and UCD
# Compat provides
Provides: %perl_compat
Provides: perl(:MODULE_COMPAT_5.26.1)
Provides: perl(:MODULE_COMPAT_5.26.0)
# Interpreter version to fulfil required genersted from "require 5.006;"
Provides: perl(:VERSION) = %{perl_version}
@ -522,6 +523,11 @@ Requires: perl(ExtUtils::ParseXS)
Requires: %perl_compat
# Match library and header files when downgrading releases
Requires: perl-libs%{?_isa} = %{perl_epoch}:%{perl_version}-%{release}
# Compiler and linker options stored into perl and used when building XS
# modules refer to hardering profiles like
# /usr/lib/rpm/redhat/redhat-hardened-cc1 that are delivered by
# redhat-rpm-config. Bug #1557667.
Requires: redhat-rpm-config
%if %{defined perl_bootstrap}
%gendep_perl_devel
%endif
@ -1952,7 +1958,7 @@ encoder/decoder. These encoding methods are specified in RFC 2045 - MIME
Summary: What modules are shipped with versions of perl
License: GPL+ or Artistic
Epoch: 1
Version: 5.20170922
Version: 5.20180414
Requires: %perl_compat
Requires: perl(List::Util)
Requires: perl(version) >= 0.88
@ -1970,7 +1976,7 @@ are shipped with each version of perl.
Summary: Tool for listing modules shipped with perl
License: GPL+ or Artistic
Epoch: 1
Version: 5.20170922
Version: 5.20180414
Requires: %perl_compat
Requires: perl(feature)
Requires: perl(version) >= 0.88
@ -2832,8 +2838,6 @@ Perl extension for Version Objects
%patch26 -p1
%patch30 -p1
%patch31 -p1
%patch34 -p1
%patch35 -p1
%patch36 -p1
%patch38 -p1
%patch43 -p1
@ -2848,11 +2852,7 @@ Perl extension for Version Objects
%patch55 -p1
%patch56 -p1
%patch58 -p1
%patch59 -p1
%patch60 -p1
%patch61 -p1
%patch62 -p1
%patch63 -p1
%patch64 -p1
%patch65 -p1
%patch66 -p1
@ -2871,6 +2871,10 @@ Perl extension for Version Objects
%patch79 -p1
%patch80 -p1
%patch81 -p1
%patch82 -p1
%patch83 -p1
%patch84 -p1
%patch85 -p1
%patch200 -p1
%patch201 -p1
@ -2892,7 +2896,6 @@ perl -x patchlevel.h \
'Fedora Patch27: Make PadlistNAMES() lvalue again (CPAN RT#101063)' \
'Fedora Patch30: Replace EU::MakeMaker dependency with EU::MM::Utils in IPC::Cmd (bug #1129443)' \
'Fedora Patch31: Make File::Glob more resistant against degenerative matching (RT#131211)' \
'Fedora Patch34: Fix cloning :via handles on thread creation (RT#131221)' \
'Fedora Patch36: Fix glob UTF-8 flag on a glob reassignment (RT#131263)' \
'Fedora Patch38: Fix handling backslashes in PATH environment variable when executing "perl -S" (RT#129183)' \
'Fedora Patch45: Fix File::Glob rt131211.t test random failures' \
@ -2905,9 +2908,7 @@ perl -x patchlevel.h \
'Fedora Patch55: Fix compiler warnings in code generated by ExtUtils::Constant (CPAN RT#63832)' \
'Fedora Patch56: Fix compiler warnings in code generated by ExtUtils::Constant (CPAN RT#101487)' \
'Fedora Patch58: Fix unreliable Time-HiRes tests (CPAN RT#122819)' \
'Fedora Patch59: Fix an overflow in the lexer when reading a new line (RT#131793)' \
'Fedora Patch60: Fix Term::ReadLine not to create spurious &STDERR files (RT#132008)' \
'Fedora Patch63: Fix a crash when a match for inversely repeated group fails (RT#132017)' \
'Fedora Patch61: Fix Term::ReadLine not to create spurious &STDERR files (RT#132008)' \
'Fedora Patch64: Fix an overflow when parsing a character range with no preceding character (RT#132245)' \
'Fedora Patch65: Fix walking symbol table for ISA in Carp' \
'Fedora Patch66: Fix handling file names with null bytes in stat and lstat functions (RT#131895)' \
@ -2919,10 +2920,14 @@ perl -x patchlevel.h \
'Fedora Patch72: Fix tainting of s/// with overloaded replacement (RT#115266)' \
'Fedora Patch73: Expand system() arguments before a fork (RT#121105)' \
'Fedora Patch76: Avoid undefined behavior when copying memory in Glob and pp_caller (RT#131746)' \
'Fedora Patch78: Fix compatibility with libxcrypt (bug #1536752)' \
'Fedora Patch78: Fix compatibility with libxcrypt (RT#133184)' \
'Fedora Patch79: Link XS modules to pthread library to fix linking with -z defs' \
'Fedora Patch80: Fix parsing braced subscript after parentheses (RT#8045)' \
'Fedora Patch81: Fix a heap use after free when moving a stack (RT#131954)' \
'Fedora Patch81: Do not clobber file bytes in :encoding layer (RT#132833)' \
'Fedora Patch82: Fix line numbers in multi-line s/// (RT#131930)' \
'Fedora Patch83: Fix parsing extended bracketed character classes (RT#132167)' \
'Fedora Patch84: Fix a possibly unitialized memory read in the Perl parser (RT#133074)' \
'Fedora Patch85: Fix an infinite loop in the regular expression compiler (RT#133185)' \
'Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on Linux' \
'Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux' \
%{nil}
@ -5210,6 +5215,24 @@ popd
# Old changelog entries are preserved in CVS.
%changelog
* Fri May 25 2018 Petr Pisar <ppisar@redhat.com> - 4:5.26.2-412
- perl-devel requires redhat-rpm-config because of hardened compiler profiles
(bug #1557667)
- Do not clobber file bytes in :encoding layer (RT#132833)
- Fix line numbers in multi-line s/// (RT#131930)
- Fix parsing extended bracketed character classes (RT#132167)
- Fix a possibly unitialized memory read in the Perl parser (RT#133074)
- Fix an infinite loop in the regular expression compiler (RT#133185)
* Fri May 18 2018 Jitka Plesnikova <jplesnik@redhat.com> - 4:5.26.2-411
- Correct license tags of perl-libs (bug #1579524)
* Mon Apr 16 2018 Petr Pisar <ppisar@redhat.com> - 4:5.26.2-410
- 5.26.2 bump
- Fix CVE-2018-6913 (heap buffer overflow in pp_pack.c) (bug #1567776)
- Fix CVE-2018-6798 (heap read overflow in regexec.c) (bug #1567777)
- Fix CVE-2018-6797 (heap write overflow in regcomp.c) (bug #1567778)
* Thu Mar 1 2018 Florian Weimer <fweimer@redhat.com> - 4:5.26.1-409
- Rebuild to pick up new build flags from redhat-rpm-config

View File

@ -1 +1 @@
SHA512 (perl-5.26.1.tar.bz2) = 821a4b78a22d24d6f79b56f68ed4a36db24bddc4dbe36c9d2622cd15d7abf6548186c037dea3d3745c1781af83339d0b54297f8094aa538046c0e57a953b5547
SHA512 (perl-5.26.2.tar.bz2) = ee9e8e56dc053b29294bd867f8651e37124a68f46a1aeffd5042e55abeacd55e19acd346dd7e7b39db202f65288cfcd7668b63e85ceeaae511462e0bbf5f733a