From 1fb65814d75c44d088db580b2aa894b67be95ade Mon Sep 17 00:00:00 2001 From: AlmaLinux RelEng Bot Date: Sun, 28 Jun 2026 23:10:52 -0400 Subject: [PATCH] import CS git perl-IO-Compress-2.081-2.el8_10 --- SOURCES/RHEL-180411.patch | 164 ++++++++++++++++++++++++++++++++++++ SPECS/perl-IO-Compress.spec | 9 +- 2 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 SOURCES/RHEL-180411.patch diff --git a/SOURCES/RHEL-180411.patch b/SOURCES/RHEL-180411.patch new file mode 100644 index 0000000..6a2e50d --- /dev/null +++ b/SOURCES/RHEL-180411.patch @@ -0,0 +1,164 @@ +From 50d2c696cfff40d7a9a247eb3fa89bcd207613b7 Mon Sep 17 00:00:00 2001 +From: pmqs +Date: Sat, 16 May 2026 17:48:34 +0100 +Subject: [PATCH] remove use of eval in globmapper. #73 + +--- + lib/File/GlobMapper.pm | 52 ++++++++++++++++++++++++++++++++++-------- + t/globmapper.t | 52 +++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 94 insertions(+), 10 deletions(-) + +diff --git a/lib/File/GlobMapper.pm b/lib/File/GlobMapper.pm +index a4e5385..be69dab 100644 +--- a/lib/File/GlobMapper.pm ++++ b/lib/File/GlobMapper.pm +@@ -29,6 +29,11 @@ our ($VERSION, @EXPORT_OK); + $VERSION = '1.001'; + @EXPORT_OK = qw( globmap ); + ++our $BEGIN_DELIM = "\xFF"; ++our $END_DELIM = "\xFE"; ++our $BACKSLASH_ESC = "\xFD"; ++our $HASH_ESC = "\xFC"; ++our $STAR_ESC = "\xFB"; + + our ($noPreBS, $metachars, $matchMetaRE, %mapping, %wildCount); + $noPreBS = '(?{InputPattern}'\n"; ++ # print "OUTPUT '$self->{OutputGlob}' => '$string'\n"; + +- #print "OUTPUT '$self->{OutputGlob}' => '$string'\n"; + $self->{OutputPattern} = $string ; + + return 1 ; +@@ -335,11 +349,31 @@ sub _getFiles + next if $inFiles{$inFile} ++ ; + + my $outFile = $inFile ; ++ my @matches ; ++ ++ my $noPreESC = '(?{InputPattern}/ ) ++ if (@matches = ($inFile =~ m/$self->{InputPattern}/ )) + { +- no warnings 'uninitialized'; +- eval "\$outFile = $self->{OutputPattern};" ; ++ $outFile = $self->{OutputPattern}; ++ my $ix = 1; ++ ++ # get the filename glob ++ $outFile =~ s/${noPreESC}${BEGIN_DELIM}${END_DELIM}/$inFile/g; ++ ++ # now each of the #1, #2,... ++ for my $pattern (@matches) ++ { ++ $outFile =~ s/${noPreESC}${BEGIN_DELIM}${ix}${END_DELIM}/$pattern/g; ++ ++ ++ $ix; ++ } ++ ++ # unescape ++ $outFile =~ s/${BEGIN_DELIM}${BEGIN_DELIM}/${BEGIN_DELIM}/g; ++ $outFile =~ s/${END_DELIM}${END_DELIM}/${END_DELIM}/g; ++ $outFile =~ s/${HASH_ESC}/#/g; ++ $outFile =~ s/${STAR_ESC}/*/g; + + if (defined $outInMapping{$outFile}) + { +diff --git a/t/globmapper.t b/t/globmapper.t +index 0c60aa6..4803083 100644 +--- a/t/globmapper.t ++++ b/t/globmapper.t +@@ -24,7 +24,7 @@ Perl $]" ) + $extra = 1 + if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 }; + +- plan tests => 68 + $extra ; ++ plan tests => 76 + $extra ; + + use_ok('File::GlobMapper') ; + } +@@ -290,6 +290,56 @@ Perl $]" ) + ], " got mapping"; + } + ++{ ++ title "check escaping"; ++ ++ my $tmpDir ;#= 'td'; ++ my $lex = LexDir->new( $tmpDir ); ++ ++ my $BEGIN_DELIM = "\xFF"; ++ my $END_DELIM = "\xFE"; ++ ++ #mkdir $tmpDir, 0777 ; ++ ++ touch map { "$tmpDir/$_.tmp" } qw( abc1 abc2 abc3 ) ; ++ ++ my $map = File::GlobMapper::globmap("$tmpDir/*b*.tmp", "$tmpDir/X-${BEGIN_DELIM}#2-#1${END_DELIM}-X"); ++ ok $map, " got map" ++ or diag $File::GlobMapper::Error ; ++ ++ is @{ $map }, 3, " returned 3 maps"; ++ is_deeply $map, ++ [ [map { "$tmpDir/$_" } ("abc1.tmp", "X-${BEGIN_DELIM}c1-a${END_DELIM}-X")], ++ [map { "$tmpDir/$_" } ("abc2.tmp", "X-${BEGIN_DELIM}c2-a${END_DELIM}-X")], ++ [map { "$tmpDir/$_" } ("abc3.tmp", "X-${BEGIN_DELIM}c3-a${END_DELIM}-X")], ++ ], " got mapping"; ++} ++ ++{ ++ title "check backslash escaping"; ++ ++ my $tmpDir ;#= 'td'; ++ my $lex = LexDir->new( $tmpDir ); ++ ++ my $BEGIN_DELIM = "\xFF"; ++ my $END_DELIM = "\xFE"; ++ ++ #mkdir $tmpDir, 0777 ; ++ ++ touch map { "$tmpDir/$_.tmp" } qw( abc1 abc2 abc3 ) ; ++ ++ my $map = File::GlobMapper::globmap("$tmpDir/*b*.tmp", $tmpDir . '/X-#2-\\#1\\*-X'); ++ ok $map, " got map" ++ or diag $File::GlobMapper::Error ; ++ ++ is @{ $map }, 3, " returned 3 maps"; ++ is_deeply $map, ++ [ [map { "$tmpDir/$_" } ("abc1.tmp", "X-c1-#1*-X")], ++ [map { "$tmpDir/$_" } ("abc2.tmp", "X-c2-#1*-X")], ++ [map { "$tmpDir/$_" } ("abc3.tmp", "X-c3-#1*-X")], ++ ], " got mapping"; ++} ++ + # TODO + # test each of the wildcard metacharacters can be mapped to the output filename + # +-- +2.52.0 + diff --git a/SPECS/perl-IO-Compress.spec b/SPECS/perl-IO-Compress.spec index cba785e..e41c569 100644 --- a/SPECS/perl-IO-Compress.spec +++ b/SPECS/perl-IO-Compress.spec @@ -11,11 +11,13 @@ Name: perl-IO-Compress Version: 2.081 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Read and write compressed data License: GPL+ or Artistic URL: http://search.cpan.org/dist/IO-Compress/ Source0: http://search.cpan.org/CPAN/authors/id/P/PM/PMQS/IO-Compress-%{version}.tar.gz +# https://github.com/pmqs/IO-Compress/commit/f2db247bf90d4cc7ee2710be384946081f3b4610 +Patch0: RHEL-180411.patch BuildArch: noarch # Module Build BuildRequires: coreutils @@ -91,6 +93,7 @@ included with the IO-Compress distribution: %prep %setup -q -n IO-Compress-%{version} +%patch0 -p1 # Remove spurious exec permissions chmod -c -x lib/IO/Uncompress/{Adapter/Identity,RawInflate}.pm @@ -141,6 +144,10 @@ make test COMPRESS_ZLIB_RUN_%{?with_long_tests:ALL}%{!?with_long_tests:MOST}=1 %{_mandir}/man3/IO::Uncompress::*.3* %changelog +* Wed Jun 03 2026 RHEL Packaging Agent - 2.081-2 +- Remove use of eval in File::GlobMapper for safer string interpolation +- Resolves: RHEL-180411 + * Mon Apr 09 2018 Jitka Plesnikova - 2.081-1 - 2.081 bump