Compare commits
30 Commits
master
...
openEuler-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
45868fc430 | ||
|
|
045ec5d148 | ||
|
|
c3c3a145b9 | ||
|
|
30c4ca4a88 | ||
|
|
5a93e1d593 | ||
|
|
24d33495b8 | ||
|
|
bb3d3ef271 | ||
|
|
7bc8c72e25 | ||
|
|
76689db267 | ||
|
|
44d9bf5bca | ||
|
|
71c7b37917 | ||
|
|
f38118c5ef | ||
|
|
c76a496118 | ||
|
|
c8fc1484cf | ||
|
|
fcd57b3f95 | ||
|
|
141b5b0cff | ||
|
|
4bcebe8c1e | ||
|
|
da21c6b088 | ||
|
|
906f16dd4b | ||
|
|
57251b26ce | ||
|
|
62aa2c02a9 | ||
|
|
10181a858c | ||
|
|
598e7bc6ac | ||
|
|
39e34e72d5 | ||
|
|
d52e7ae493 | ||
|
|
b0633db262 | ||
|
|
34ad703dbe | ||
|
|
724835d47a | ||
|
|
fc1093bfa5 | ||
|
|
df33e5a74f |
67
backport-CVE-2021-36770.patch
Normal file
67
backport-CVE-2021-36770.patch
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
From 527e482dc70b035d0df4f8c77a00d81f8d775c74 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dan Kogai <dankogai+github@gmail.com>
|
||||||
|
Date: Mon, 9 Aug 2021 23:19:25 +0900
|
||||||
|
Subject: [PATCH] version 3.12 to address CVE-2021-36770
|
||||||
|
|
||||||
|
---
|
||||||
|
cpan/Encode/Encode.pm | 8 ++++----
|
||||||
|
cpan/Encode/Unicode/Unicode.xs | 2 +-
|
||||||
|
cpan/Encode/t/Unicode.t | 2 +-
|
||||||
|
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/cpan/Encode/Encode.pm b/cpan/Encode/Encode.pm
|
||||||
|
index d3eb3c1..769439c 100644
|
||||||
|
--- a/cpan/Encode/Encode.pm
|
||||||
|
+++ b/cpan/Encode/Encode.pm
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
#
|
||||||
|
-# $Id: Encode.pm,v 3.08 2020/12/02 01:27:44 dankogai Exp $
|
||||||
|
+# $Id: Encode.pm,v 3.12 2021/08/09 14:17:04 dankogai Exp dankogai $
|
||||||
|
#
|
||||||
|
package Encode;
|
||||||
|
use strict;
|
||||||
|
@@ -7,7 +7,7 @@ use warnings;
|
||||||
|
use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG};
|
||||||
|
our $VERSION;
|
||||||
|
BEGIN {
|
||||||
|
- $VERSION = sprintf "%d.%02d", q$Revision: 3.08 $ =~ /(\d+)/g;
|
||||||
|
+ $VERSION = sprintf "%d.%02d", q$Revision: 3.12 $ =~ /(\d+)/g;
|
||||||
|
require XSLoader;
|
||||||
|
XSLoader::load( __PACKAGE__, $VERSION );
|
||||||
|
}
|
||||||
|
@@ -65,8 +65,8 @@ require Encode::Config;
|
||||||
|
eval {
|
||||||
|
local $SIG{__DIE__};
|
||||||
|
local $SIG{__WARN__};
|
||||||
|
- local @INC = @INC || ();
|
||||||
|
- pop @INC if $INC[-1] eq '.';
|
||||||
|
+ local @INC = @INC;
|
||||||
|
+ pop @INC if @INC && $INC[-1] eq '.';
|
||||||
|
require Encode::ConfigLocal;
|
||||||
|
};
|
||||||
|
|
||||||
|
diff --git a/cpan/Encode/Unicode/Unicode.xs b/cpan/Encode/Unicode/Unicode.xs
|
||||||
|
index 4e111e2..18c783f 100644
|
||||||
|
--- a/cpan/Encode/Unicode/Unicode.xs
|
||||||
|
+++ b/cpan/Encode/Unicode/Unicode.xs
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
/*
|
||||||
|
- $Id: Unicode.xs,v 2.19 2019/01/21 03:09:59 dankogai Exp $
|
||||||
|
+ $Id: Unicode.xs,v 2.20 2021/07/23 02:26:54 dankogai Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define IN_UNICODE_XS
|
||||||
|
diff --git a/cpan/Encode/t/Unicode.t b/cpan/Encode/t/Unicode.t
|
||||||
|
index 2cc5d54..9e2bcbe 100644
|
||||||
|
--- a/cpan/Encode/t/Unicode.t
|
||||||
|
+++ b/cpan/Encode/t/Unicode.t
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
#
|
||||||
|
-# $Id: Unicode.t,v 2.3 2012/08/05 23:08:49 dankogai Exp $
|
||||||
|
+# $Id: Unicode.t,v 2.4 2021/07/23 02:26:54 dankogai Exp $
|
||||||
|
#
|
||||||
|
# This script is written entirely in ASCII, even though quoted literals
|
||||||
|
# do include non-BMP unicode characters -- Are you happy, jhi?
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
78
backport-CVE-2022-48522.patch
Normal file
78
backport-CVE-2022-48522.patch
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
From 43cbd598f60a85afcfc3de71e89e8a48330158f5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tony Cook <tony@develop-help.com>
|
||||||
|
Date: Wed, 22 Sep 2021 11:47:55 +1000
|
||||||
|
Subject: [PATCH] Don't try to Sv[PI]V() on an undef index SV in
|
||||||
|
find_uninit_var()
|
||||||
|
|
||||||
|
When trying to evaluate:
|
||||||
|
|
||||||
|
$x{$y}
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
$x[$y]
|
||||||
|
|
||||||
|
where both the index and the hash or array entry was undefined,
|
||||||
|
when trying to report the entry as uninitialised, find_uninit_var()
|
||||||
|
would try to get the string or numeric value of the index,
|
||||||
|
recursively trying to produce a warning.
|
||||||
|
|
||||||
|
This would end up overflowing the stack, producing a segmentation fault.
|
||||||
|
|
||||||
|
Fixes #19147.
|
||||||
|
|
||||||
|
(cherry picked from commit 23cca2d1f4544cb47f1124d98c308ce1f31f09a6)
|
||||||
|
Conflict:NA
|
||||||
|
Reference:https://github.com/Perl/perl5/commit/43cbd598f60a85afcfc3de71e89e8a48330158f5
|
||||||
|
---
|
||||||
|
sv.c | 7 ++++---
|
||||||
|
t/lib/warnings/sv | 13 +++++++++++++
|
||||||
|
2 files changed, 17 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sv.c b/sv.c
|
||||||
|
index 27c425a54e6f..46bf9815cd15 100644
|
||||||
|
--- a/sv.c
|
||||||
|
+++ b/sv.c
|
||||||
|
@@ -16782,14 +16782,15 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
|
||||||
|
}
|
||||||
|
if (index_sv && !SvMAGICAL(index_sv) && !SvROK(index_sv)) {
|
||||||
|
if (is_hv) {
|
||||||
|
- HE *he = hv_fetch_ent(MUTABLE_HV(sv), index_sv, 0, 0);
|
||||||
|
+ SV *report_index_sv = SvOK(index_sv) ? index_sv : &PL_sv_no;
|
||||||
|
+ HE *he = hv_fetch_ent(MUTABLE_HV(sv), report_index_sv, 0, 0);
|
||||||
|
if (!he) {
|
||||||
|
return varname(agg_gv, '%', agg_targ,
|
||||||
|
- index_sv, 0, FUV_SUBSCRIPT_HASH);
|
||||||
|
+ report_index_sv, 0, FUV_SUBSCRIPT_HASH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
- SSize_t index = SvIV(index_sv);
|
||||||
|
+ SSize_t index = SvOK(index_sv) ? SvIV(index_sv) : 0;
|
||||||
|
SV * const * const svp =
|
||||||
|
av_fetch(MUTABLE_AV(sv), index, FALSE);
|
||||||
|
if (!svp) {
|
||||||
|
diff --git a/t/lib/warnings/sv b/t/lib/warnings/sv
|
||||||
|
index be04b8457e3a..8524c2c25a1d 100644
|
||||||
|
--- a/t/lib/warnings/sv
|
||||||
|
+++ b/t/lib/warnings/sv
|
||||||
|
@@ -211,6 +211,19 @@ Use of uninitialized value $a in join or string at - line 4.
|
||||||
|
Use of uninitialized value $a in concatenation (.) or string at - line 5.
|
||||||
|
Use of uninitialized value $a in concatenation (.) or string at - line 6.
|
||||||
|
########
|
||||||
|
+# NAME https://github.com/Perl/perl5/issues/19147
|
||||||
|
+use warnings 'uninitialized';
|
||||||
|
+my %x;
|
||||||
|
+my @z;
|
||||||
|
+my $y;
|
||||||
|
+-$x{$y};
|
||||||
|
+-$z[$y];
|
||||||
|
+EXPECT
|
||||||
|
+Use of uninitialized value $y in hash element at - line 5.
|
||||||
|
+Use of uninitialized value $x{""} in negation (-) at - line 5.
|
||||||
|
+Use of uninitialized value $y in array element at - line 6.
|
||||||
|
+Use of uninitialized value $z[0] in negation (-) at - line 6.
|
||||||
|
+########
|
||||||
|
# sv.c
|
||||||
|
use warnings 'numeric' ;
|
||||||
|
sub TIESCALAR{bless[]} ;
|
||||||
25
backport-CVE-2023-31484.patch
Normal file
25
backport-CVE-2023-31484.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From 9c98370287f4e709924aee7c58ef21c85289a7f0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stig Palmquist <git@stig.io>
|
||||||
|
Date: Tue, 28 Feb 2023 11:54:06 +0100
|
||||||
|
Subject: [PATCH] Add verify_SSL=>1 to HTTP::Tiny to verify https server
|
||||||
|
identity
|
||||||
|
|
||||||
|
---
|
||||||
|
cpan/CPAN/lib/CPAN/HTTP/Client.pm | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/cpan/CPAN/lib/CPAN/HTTP/Client.pm b/cpan/CPAN/lib/CPAN/HTTP/Client.pm
|
||||||
|
index 4fc792c..a616fee 100644
|
||||||
|
--- a/cpan/CPAN/lib/CPAN/HTTP/Client.pm
|
||||||
|
+++ b/cpan/CPAN/lib/CPAN/HTTP/Client.pm
|
||||||
|
@@ -32,6 +32,7 @@ sub mirror {
|
||||||
|
|
||||||
|
my $want_proxy = $self->_want_proxy($uri);
|
||||||
|
my $http = HTTP::Tiny->new(
|
||||||
|
+ verify_SSL => 1,
|
||||||
|
$want_proxy ? (proxy => $self->{proxy}) : ()
|
||||||
|
);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
84
backport-CVE-2023-31486.patch
Normal file
84
backport-CVE-2023-31486.patch
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
From 1490431e40e22052f75a0b3449f1f53cbd27ba92 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dominic Hargreaves <dom@earth.li>
|
||||||
|
Date: Thu, 21 May 2020 22:53:37 +0100
|
||||||
|
Subject: [PATCH] Enable SSL by default in HTTP::Tiny
|
||||||
|
|
||||||
|
HTTP::Tiny 0.082, a Perl core module since 5.13.9 and available standalone on CPAN,
|
||||||
|
has an insecure default TLS configuration where users must opt in to verify certificates.
|
||||||
|
|
||||||
|
Reference: https://salsa.debian.org/perl-team/interpreter/perl/-/commit/1490431e40e22052f75a0b3449f1f53cbd27ba92.patch
|
||||||
|
Conflict:NA
|
||||||
|
---
|
||||||
|
cpan/HTTP-Tiny/lib/HTTP/Tiny.pm | 20 +++++++++-----------
|
||||||
|
1 file changed, 9 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm b/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
|
||||||
|
index 5803e4599f01..5970b6e225f3 100644
|
||||||
|
--- a/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
|
||||||
|
+++ b/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm
|
||||||
|
@@ -40,7 +40,7 @@ sub _croak { require Carp; Carp::croak(@_) }
|
||||||
|
#pod * C<timeout> — Request timeout in seconds (default is 60) If a socket open,
|
||||||
|
#pod read or write takes longer than the timeout, an exception is thrown.
|
||||||
|
#pod * C<verify_SSL> — A boolean that indicates whether to validate the SSL
|
||||||
|
-#pod certificate of an C<https> — connection (default is false)
|
||||||
|
+#pod certificate of an C<https> — connection (default is true)
|
||||||
|
#pod * C<SSL_options> — A hashref of C<SSL_*> — options to pass through to
|
||||||
|
#pod L<IO::Socket::SSL>
|
||||||
|
#pod
|
||||||
|
@@ -112,7 +112,7 @@ sub new {
|
||||||
|
max_redirect => 5,
|
||||||
|
timeout => defined $args{timeout} ? $args{timeout} : 60,
|
||||||
|
keep_alive => 1,
|
||||||
|
- verify_SSL => $args{verify_SSL} || $args{verify_ssl} || 0, # no verification by default
|
||||||
|
+ verify_SSL => $args{verify_SSL} // $args{verify_ssl} // 1, # verification by default
|
||||||
|
no_proxy => $ENV{no_proxy},
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -1038,7 +1038,7 @@ sub new {
|
||||||
|
timeout => 60,
|
||||||
|
max_line_size => 16384,
|
||||||
|
max_header_lines => 64,
|
||||||
|
- verify_SSL => 0,
|
||||||
|
+ verify_SSL => 1,
|
||||||
|
SSL_options => {},
|
||||||
|
%args
|
||||||
|
}, $class;
|
||||||
|
@@ -1765,7 +1765,7 @@ C<timeout> — Request timeout in seconds (default is 60) If a socket open, read
|
||||||
|
|
||||||
|
=item *
|
||||||
|
|
||||||
|
-C<verify_SSL> — A boolean that indicates whether to validate the SSL certificate of an C<https> — connection (default is false)
|
||||||
|
+C<verify_SSL> — A boolean that indicates whether to validate the SSL certificate of an C<https> — connection (default is true)
|
||||||
|
|
||||||
|
=item *
|
||||||
|
|
||||||
|
@@ -2035,7 +2035,7 @@ Verification of server identity
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
-B<By default, HTTP::Tiny does not verify server identity>.
|
||||||
|
+B<By default, HTTP::Tiny verifies server identity>.
|
||||||
|
|
||||||
|
Server identity verification is controversial and potentially tricky because it
|
||||||
|
depends on a (usually paid) third-party Certificate Authority (CA) trust model
|
||||||
|
@@ -2043,16 +2043,14 @@ to validate a certificate as legitimate. This discriminates against servers
|
||||||
|
with self-signed certificates or certificates signed by free, community-driven
|
||||||
|
CA's such as L<CAcert.org|http://cacert.org>.
|
||||||
|
|
||||||
|
-By default, HTTP::Tiny does not make any assumptions about your trust model,
|
||||||
|
-threat level or risk tolerance. It just aims to give you an encrypted channel
|
||||||
|
-when you need one.
|
||||||
|
-
|
||||||
|
Setting the C<verify_SSL> attribute to a true value will make HTTP::Tiny verify
|
||||||
|
that an SSL connection has a valid SSL certificate corresponding to the host
|
||||||
|
name of the connection and that the SSL certificate has been verified by a CA.
|
||||||
|
Assuming you trust the CA, this will protect against a L<man-in-the-middle
|
||||||
|
-attack|http://en.wikipedia.org/wiki/Man-in-the-middle_attack>. If you are
|
||||||
|
-concerned about security, you should enable this option.
|
||||||
|
+attack|http://en.wikipedia.org/wiki/Man-in-the-middle_attack>.
|
||||||
|
+
|
||||||
|
+If you are not concerned about security, and this default causes
|
||||||
|
+problems, you should disable this option.
|
||||||
|
|
||||||
|
Certificate verification requires a file containing trusted CA certificates.
|
||||||
|
|
||||||
196
backport-CVE-2023-47039.patch
Normal file
196
backport-CVE-2023-47039.patch
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
From 906e92715f4ee68ea95086867f4f97b1f4f10ac3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tony Cook <tony@develop-help.com>
|
||||||
|
Date: Tue, 3 Oct 2023 09:40:07 +1100
|
||||||
|
Subject: [PATCH] win32: default the shell to cmd.exe in the Windows system
|
||||||
|
directory
|
||||||
|
|
||||||
|
This prevents picking up cmd.exe from the current directory, or
|
||||||
|
even from the PATH.
|
||||||
|
|
||||||
|
This protects against a privilege escalation attack where an attacker
|
||||||
|
in a separate session creates a cmd.exe in a directory where the
|
||||||
|
target account happens to have its current directory.
|
||||||
|
---
|
||||||
|
t/win32/system.t | 30 ++++++++++++--------
|
||||||
|
win32/win32.c | 71 +++++++++++++++++++++++++++++++++++++++++-------
|
||||||
|
2 files changed, 79 insertions(+), 22 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/t/win32/system.t b/t/win32/system.t
|
||||||
|
index 939a02db55..c885059012 100644
|
||||||
|
--- a/t/win32/system.t
|
||||||
|
+++ b/t/win32/system.t
|
||||||
|
@@ -82,6 +82,7 @@ close $F;
|
||||||
|
chdir($testdir);
|
||||||
|
END {
|
||||||
|
chdir($cwd) && rmtree("$cwd/$testdir") if -d "$cwd/$testdir";
|
||||||
|
+ unlink "cmd.exe";
|
||||||
|
}
|
||||||
|
if (open(my $EIN, "$cwd/win32/${exename}_exe.uu")) {
|
||||||
|
note "Unpacking $exename.exe";
|
||||||
|
@@ -104,21 +105,20 @@ else {
|
||||||
|
}
|
||||||
|
note "Compiling $exename.c";
|
||||||
|
note "$Config{cc} $Config{ccflags} $exename.c";
|
||||||
|
- if (system("$Config{cc} $Config{ccflags} $minus_o $exename.c >log 2>&1") != 0) {
|
||||||
|
+ if (system("$Config{cc} $Config{ccflags} $minus_o $exename.c >log 2>&1") != 0 ||
|
||||||
|
+ !-f "$exename.exe") {
|
||||||
|
note "Could not compile $exename.c, status $?";
|
||||||
|
- note "Where is your C compiler?";
|
||||||
|
- skip_all "can't build test executable";
|
||||||
|
- }
|
||||||
|
- unless (-f "$exename.exe") {
|
||||||
|
- if (open(LOG,'<log'))
|
||||||
|
- {
|
||||||
|
- while(<LOG>) {
|
||||||
|
- note $_;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
+ note "Where is your C compiler?";
|
||||||
|
+ if (open(LOG,'<log'))
|
||||||
|
+ {
|
||||||
|
+ while(<LOG>) {
|
||||||
|
+ note $_;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
else {
|
||||||
|
- warn "Cannot open log (in $testdir):$!";
|
||||||
|
+ warn "Cannot open log (in $testdir):$!";
|
||||||
|
}
|
||||||
|
+ skip_all "can't build test executable";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
copy("$plxname.bat","$plxname.cmd");
|
||||||
|
@@ -128,6 +128,12 @@ unless (-x "$testdir/$exename.exe") {
|
||||||
|
skip_all "can't build test executable";
|
||||||
|
}
|
||||||
|
|
||||||
|
+# test we only look for cmd.exe in the standard place
|
||||||
|
+delete $ENV{PERLSHELL};
|
||||||
|
+copy("$testdir/$exename.exe", "$testdir/cmd.exe") or die $!;
|
||||||
|
+copy("$testdir/$exename.exe", "cmd.exe") or die $!;
|
||||||
|
+$ENV{PATH} = qq("$testdir";$ENV{PATH});
|
||||||
|
+
|
||||||
|
open my $T, "$^X -I../lib -w win32/system_tests |"
|
||||||
|
or die "Can't spawn win32/system_tests: $!";
|
||||||
|
my $expect;
|
||||||
|
diff --git a/win32/win32.c b/win32/win32.c
|
||||||
|
index 94248ca168..5d54cf8d4a 100644
|
||||||
|
--- a/win32/win32.c
|
||||||
|
+++ b/win32/win32.c
|
||||||
|
@@ -117,7 +117,7 @@ static char* win32_get_xlib(const char *pl,
|
||||||
|
|
||||||
|
static BOOL has_shell_metachars(const char *ptr);
|
||||||
|
static long tokenize(const char *str, char **dest, char ***destv);
|
||||||
|
-static void get_shell(void);
|
||||||
|
+static int get_shell(void);
|
||||||
|
static char* find_next_space(const char *s);
|
||||||
|
static int do_spawn2(pTHX_ const char *cmd, int exectype);
|
||||||
|
static int do_spawn2_handles(pTHX_ const char *cmd, int exectype,
|
||||||
|
@@ -600,7 +600,13 @@ tokenize(const char *str, char **dest, char ***destv)
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void
|
||||||
|
+static const char
|
||||||
|
+cmd_opts[] = "/x/d/c";
|
||||||
|
+
|
||||||
|
+static const char
|
||||||
|
+shell_cmd[] = "cmd.exe";
|
||||||
|
+
|
||||||
|
+static int
|
||||||
|
get_shell(void)
|
||||||
|
{
|
||||||
|
dTHX;
|
||||||
|
@@ -612,12 +618,53 @@ get_shell(void)
|
||||||
|
* interactive use (which is what most programs look in COMSPEC
|
||||||
|
* for).
|
||||||
|
*/
|
||||||
|
- const char* defaultshell = "cmd.exe /x/d/c";
|
||||||
|
- const char *usershell = PerlEnv_getenv("PERL5SHELL");
|
||||||
|
- w32_perlshell_items = tokenize(usershell ? usershell : defaultshell,
|
||||||
|
- &w32_perlshell_tokens,
|
||||||
|
- &w32_perlshell_vec);
|
||||||
|
+ const char *shell = PerlEnv_getenv("PERL5SHELL");
|
||||||
|
+ if (shell) {
|
||||||
|
+ w32_perlshell_items = tokenize(shell,
|
||||||
|
+ &w32_perlshell_tokens,
|
||||||
|
+ &w32_perlshell_vec);
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ /* tokenize does some Unix-ish like things like
|
||||||
|
+ \\ escaping that don't work well here
|
||||||
|
+ */
|
||||||
|
+ char shellbuf[MAX_PATH];
|
||||||
|
+ UINT len = GetSystemDirectoryA(shellbuf, sizeof(shellbuf));
|
||||||
|
+ if (len == 0) {
|
||||||
|
+ translate_to_errno();
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ else if (len >= MAX_PATH) {
|
||||||
|
+ /* buffer too small */
|
||||||
|
+ errno = E2BIG;
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ if (shellbuf[len-1] != '\\') {
|
||||||
|
+ my_strlcat(shellbuf, "\\", sizeof(shellbuf));
|
||||||
|
+ ++len;
|
||||||
|
+ }
|
||||||
|
+ if (len + sizeof(shell_cmd) > sizeof(shellbuf)) {
|
||||||
|
+ errno = E2BIG;
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ my_strlcat(shellbuf, shell_cmd, sizeof(shellbuf));
|
||||||
|
+ len += sizeof(shell_cmd)-1;
|
||||||
|
+
|
||||||
|
+ Newx(w32_perlshell_vec, 3, char *);
|
||||||
|
+ Newx(w32_perlshell_tokens, len + 1 + sizeof(cmd_opts), char);
|
||||||
|
+
|
||||||
|
+ my_strlcpy(w32_perlshell_tokens, shellbuf, len+1);
|
||||||
|
+ my_strlcpy(w32_perlshell_tokens + len +1, cmd_opts,
|
||||||
|
+ sizeof(cmd_opts));
|
||||||
|
+
|
||||||
|
+ w32_perlshell_vec[0] = w32_perlshell_tokens;
|
||||||
|
+ w32_perlshell_vec[1] = w32_perlshell_tokens + len + 1;
|
||||||
|
+ w32_perlshell_vec[2] = NULL;
|
||||||
|
+
|
||||||
|
+ w32_perlshell_items = 2;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
+ return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
@@ -635,7 +682,9 @@ Perl_do_aspawn(pTHX_ SV *really, SV **mark, SV **sp)
|
||||||
|
if (sp <= mark)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
- get_shell();
|
||||||
|
+ if (get_shell() < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
Newx(argv, (sp - mark) + w32_perlshell_items + 2, char*);
|
||||||
|
|
||||||
|
if (SvNIOKp(*(mark+1)) && !SvPOKp(*(mark+1))) {
|
||||||
|
@@ -765,7 +814,8 @@ do_spawn2_handles(pTHX_ const char *cmd, int exectype, const int *handles)
|
||||||
|
if (needToTry) {
|
||||||
|
char **argv;
|
||||||
|
int i = -1;
|
||||||
|
- get_shell();
|
||||||
|
+ if (get_shell() < 0)
|
||||||
|
+ return -1;
|
||||||
|
Newx(argv, w32_perlshell_items + 2, char*);
|
||||||
|
while (++i < w32_perlshell_items)
|
||||||
|
argv[i] = w32_perlshell_vec[i];
|
||||||
|
@@ -3482,7 +3532,8 @@ win32_pipe(int *pfd, unsigned int size, int mode)
|
||||||
|
DllExport PerlIO*
|
||||||
|
win32_popenlist(const char *mode, IV narg, SV **args)
|
||||||
|
{
|
||||||
|
- get_shell();
|
||||||
|
+ if (get_shell() < 0)
|
||||||
|
+ return NULL;
|
||||||
|
|
||||||
|
return do_popen(mode, NULL, narg, args);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
124
backport-CVE-2023-47100-CVE-2023-47038.patch
Normal file
124
backport-CVE-2023-47100-CVE-2023-47038.patch
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
From 12c313ce49b36160a7ca2e9b07ad5bd92ee4a010 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Karl Williamson <khw@cpan.org>
|
||||||
|
Date: Sat, 9 Sep 2023 11:59:09 -0600
|
||||||
|
Subject: [PATCH] Fix read/write past buffer end: perl-security#140
|
||||||
|
|
||||||
|
A package name may be specified in a \p{...} regular expression
|
||||||
|
construct. If unspecified, "utf8::" is assumed, which is the package
|
||||||
|
all official Unicode properties are in. By specifying a different
|
||||||
|
package, one can create a user-defined property with the same
|
||||||
|
unqualified name as a Unicode one. Such a property is defined by a sub
|
||||||
|
whose name begins with "Is" or "In", and if the sub wishes to refer to
|
||||||
|
an official Unicode property, it must explicitly specify the "utf8::".
|
||||||
|
S_parse_uniprop_string() is used to parse the interior of both \p{} and
|
||||||
|
the user-defined sub lines.
|
||||||
|
|
||||||
|
In S_parse_uniprop_string(), it parses the input "name" parameter,
|
||||||
|
creating a modified copy, "lookup_name", malloc'ed with the same size as
|
||||||
|
"name". The modifications are essentially to create a canonicalized
|
||||||
|
version of the input, with such things as extraneous white-space
|
||||||
|
stripped off. I found it convenient to strip off the package specifier
|
||||||
|
"utf8::". To to so, the code simply pretends "lookup_name" begins just
|
||||||
|
after the "utf8::", and adjusts various other values to compensate.
|
||||||
|
However, it missed the adjustment of one required one.
|
||||||
|
|
||||||
|
This is only a problem when the property name begins with "perl" and
|
||||||
|
isn't "perlspace" nor "perlword". All such ones are undocumented
|
||||||
|
internal properties.
|
||||||
|
|
||||||
|
What happens in this case is that the input is reparsed with slightly
|
||||||
|
different rules in effect as to what is legal versus illegal. The
|
||||||
|
problem is that "lookup_name" no longer is pointing to its initial
|
||||||
|
value, but "name" is. Thus the space allocated for filling "lookup_name"
|
||||||
|
is now shorter than "name", and as this shortened "lookup_name" is
|
||||||
|
filled by copying suitable portions of "name", the write can be to
|
||||||
|
unallocated space.
|
||||||
|
|
||||||
|
The solution is to skip the "utf8::" when reparsing "name". Then both
|
||||||
|
"lookup_name" and "name" are effectively shortened by the same amount,
|
||||||
|
and there is no going off the end.
|
||||||
|
|
||||||
|
This commit also does white-space adjustment so that things align
|
||||||
|
vertically for readability.
|
||||||
|
|
||||||
|
This can be easily backported to earlier Perl releases.
|
||||||
|
|
||||||
|
Reference:https://github.com/Perl/perl5/commit/12c313ce49b36160a7ca2e9b07ad5bd92ee4a010
|
||||||
|
Conflict:Context adaptation
|
||||||
|
|
||||||
|
---
|
||||||
|
regcomp.c | 17 +++++++++++------
|
||||||
|
t/re/pat_advanced.t | 8 ++++++++
|
||||||
|
2 files changed, 19 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/regcomp.c b/regcomp.c
|
||||||
|
index f5e5f58..0d3e9a9 100644
|
||||||
|
--- a/regcomp.c
|
||||||
|
+++ b/regcomp.c
|
||||||
|
@@ -23815,7 +23815,7 @@ S_parse_uniprop_string(pTHX_
|
||||||
|
* compile perl to know about them) */
|
||||||
|
bool is_nv_type = FALSE;
|
||||||
|
|
||||||
|
- unsigned int i, j = 0;
|
||||||
|
+ unsigned int i = 0, i_zero = 0, j = 0;
|
||||||
|
int equals_pos = -1; /* Where the '=' is found, or negative if none */
|
||||||
|
int slash_pos = -1; /* Where the '/' is found, or negative if none */
|
||||||
|
int table_index = 0; /* The entry number for this property in the table
|
||||||
|
@@ -23949,9 +23949,13 @@ S_parse_uniprop_string(pTHX_
|
||||||
|
* all of them are considered to be for that package. For the purposes of
|
||||||
|
* parsing the rest of the property, strip it off */
|
||||||
|
if (non_pkg_begin == STRLENs("utf8::") && memBEGINPs(name, name_len, "utf8::")) {
|
||||||
|
- lookup_name += STRLENs("utf8::");
|
||||||
|
- j -= STRLENs("utf8::");
|
||||||
|
- equals_pos -= STRLENs("utf8::");
|
||||||
|
+ lookup_name += STRLENs("utf8::");
|
||||||
|
+ j -= STRLENs("utf8::");
|
||||||
|
+ equals_pos -= STRLENs("utf8::");
|
||||||
|
+ i_zero = STRLENs("utf8::"); /* When resetting 'i' to reparse
|
||||||
|
+ from the beginning, it has to be
|
||||||
|
+ set past what we're stripping
|
||||||
|
+ off */
|
||||||
|
stripped_utf8_pkg = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -24356,7 +24360,8 @@ S_parse_uniprop_string(pTHX_
|
||||||
|
|
||||||
|
/* We set the inputs back to 0 and the code below will reparse,
|
||||||
|
* using strict */
|
||||||
|
- i = j = 0;
|
||||||
|
+ i = i_zero;
|
||||||
|
+ j = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -24377,7 +24382,7 @@ S_parse_uniprop_string(pTHX_
|
||||||
|
* separates two digits */
|
||||||
|
if (cur == '_') {
|
||||||
|
if ( stricter
|
||||||
|
- && ( i == 0 || (int) i == equals_pos || i == name_len- 1
|
||||||
|
+ && ( i == i_zero || (int) i == equals_pos || i == name_len- 1
|
||||||
|
|| ! isDIGIT_A(name[i-1]) || ! isDIGIT_A(name[i+1])))
|
||||||
|
{
|
||||||
|
lookup_name[j++] = '_';
|
||||||
|
diff --git a/t/re/pat_advanced.t b/t/re/pat_advanced.t
|
||||||
|
index d679870..3b79eec 100644
|
||||||
|
--- a/t/re/pat_advanced.t
|
||||||
|
+++ b/t/re/pat_advanced.t
|
||||||
|
@@ -2565,6 +2565,14 @@ EOF
|
||||||
|
{}, "GH #17278");
|
||||||
|
}
|
||||||
|
|
||||||
|
+ { # perl-security#140, read/write past buffer end
|
||||||
|
+ fresh_perl_like('qr/\p{utf8::perl x}/',
|
||||||
|
+ qr/Illegal user-defined property name "utf8::perl x" in regex/,
|
||||||
|
+ {}, "perl-security#140");
|
||||||
|
+ fresh_perl_is('qr/\p{utf8::_perl_surrogate}/', "",
|
||||||
|
+ {}, "perl-security#140");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
|
||||||
|
# !!! NOTE that tests that aren't at all likely to crash perl should go
|
||||||
|
# a ways above, above these last ones. There's a comment there that, like
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
@ -8,10 +8,10 @@ Subject: [PATCH] change lib to lib64
|
|||||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
diff --git a/Configure b/Configure
|
diff --git a/Configure b/Configure
|
||||||
index 3be9f05..1c53af7 100755
|
index cc74bdc..0e7441d 100755
|
||||||
--- a/Configure
|
--- a/Configure
|
||||||
+++ b/Configure
|
+++ b/Configure
|
||||||
@@ -7269,8 +7269,8 @@ esac'
|
@@ -7229,8 +7229,8 @@ esac'
|
||||||
: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
|
: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
|
||||||
case "$installstyle" in
|
case "$installstyle" in
|
||||||
'') case "$prefix" in
|
'') case "$prefix" in
|
||||||
@ -22,7 +22,7 @@ index 3be9f05..1c53af7 100755
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
*) dflt="$installstyle" ;;
|
*) dflt="$installstyle" ;;
|
||||||
@@ -7336,8 +7336,8 @@ esac
|
@@ -7296,8 +7296,8 @@ esac
|
||||||
: /opt/perl/lib/perl5... would be redundant.
|
: /opt/perl/lib/perl5... would be redundant.
|
||||||
: The default "style" setting is made in installstyle.U
|
: The default "style" setting is made in installstyle.U
|
||||||
case "$installstyle" in
|
case "$installstyle" in
|
||||||
@ -33,7 +33,7 @@ index 3be9f05..1c53af7 100755
|
|||||||
esac
|
esac
|
||||||
eval $prefixit
|
eval $prefixit
|
||||||
$cat <<EOM
|
$cat <<EOM
|
||||||
@@ -7584,8 +7584,8 @@ siteprefixexp="$ansexp"
|
@@ -7544,8 +7544,8 @@ siteprefixexp="$ansexp"
|
||||||
prog=`echo $package | $sed 's/-*[0-9.]*$//'`
|
prog=`echo $package | $sed 's/-*[0-9.]*$//'`
|
||||||
case "$sitelib" in
|
case "$sitelib" in
|
||||||
'') case "$installstyle" in
|
'') case "$installstyle" in
|
||||||
@ -44,7 +44,7 @@ index 3be9f05..1c53af7 100755
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
*) dflt="$sitelib"
|
*) dflt="$sitelib"
|
||||||
@@ -8001,8 +8001,8 @@ case "$vendorprefix" in
|
@@ -7963,8 +7963,8 @@ case "$vendorprefix" in
|
||||||
'')
|
'')
|
||||||
prog=`echo $package | $sed 's/-*[0-9.]*$//'`
|
prog=`echo $package | $sed 's/-*[0-9.]*$//'`
|
||||||
case "$installstyle" in
|
case "$installstyle" in
|
||||||
@ -56,5 +56,5 @@ index 3be9f05..1c53af7 100755
|
|||||||
;;
|
;;
|
||||||
*) dflt="$vendorlib"
|
*) dflt="$vendorlib"
|
||||||
--
|
--
|
||||||
1.8.3.1
|
2.27.0
|
||||||
|
|
||||||
|
|||||||
@ -8,10 +8,10 @@ Subject: [PATCH] disable rpath by default
|
|||||||
1 file changed, 3 deletions(-)
|
1 file changed, 3 deletions(-)
|
||||||
|
|
||||||
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
|
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
|
||||||
index fe53be1..fd0f5b5 100644
|
index 977b50e..ac5cdb5 100644
|
||||||
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
|
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
|
||||||
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
|
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
|
||||||
@@ -1045,9 +1045,6 @@ sub xs_make_dynamic_lib {
|
@@ -1077,9 +1077,6 @@ sub xs_make_dynamic_lib {
|
||||||
}
|
}
|
||||||
|
|
||||||
my $ld_run_path_shell = "";
|
my $ld_run_path_shell = "";
|
||||||
@ -22,5 +22,5 @@ index fe53be1..fd0f5b5 100644
|
|||||||
push @m, sprintf <<'MAKE', $ld_run_path_shell, $ldrun, $dlsyms_arg, $ldfrom, $self->xs_obj_opt('$@'), $libs, $exportlist;
|
push @m, sprintf <<'MAKE', $ld_run_path_shell, $ldrun, $dlsyms_arg, $ldfrom, $self->xs_obj_opt('$@'), $libs, $exportlist;
|
||||||
%s$(LD) %s $(LDDLFLAGS) %s %s $(OTHERLDFLAGS) %s $(MYEXTLIB) \
|
%s$(LD) %s $(LDDLFLAGS) %s %s $(OTHERLDFLAGS) %s $(MYEXTLIB) \
|
||||||
--
|
--
|
||||||
1.8.3.1
|
2.27.0
|
||||||
|
|
||||||
|
|||||||
@ -6,10 +6,6 @@ MIME-Version: 1.0
|
|||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
Reason:Install libperl.so to shrpdir on Linux
|
|
||||||
Conflict:NA
|
|
||||||
Reference:https://src.fedoraproject.org/rpms/perl/blob/master/f/perl-5.22.0-Install-libperl.so-to-shrpdir-on-Linux.patch
|
|
||||||
|
|
||||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||||
---
|
---
|
||||||
Configure | 7 ++++---
|
Configure | 7 ++++---
|
||||||
@ -0,0 +1,110 @@
|
|||||||
|
From 9575301256f67116eccdbb99b38fc804ba3dcf53 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
||||||
|
Date: Mon, 18 Apr 2016 16:24:03 +0200
|
||||||
|
Subject: [PATCH] Provide ExtUtils::MM methods as standalone
|
||||||
|
ExtUtils::MM::Utils
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
If you cannot afford depending on ExtUtils::MakeMaker, you can
|
||||||
|
depend on ExtUtils::MM::Utils instead.
|
||||||
|
|
||||||
|
<https://bugzilla.redhat.com/show_bug.cgi?id=1129443>
|
||||||
|
|
||||||
|
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
||||||
|
---
|
||||||
|
MANIFEST | 1 +
|
||||||
|
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm | 68 ++++++++++++++++++++++++
|
||||||
|
2 files changed, 69 insertions(+)
|
||||||
|
create mode 100644 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm
|
||||||
|
|
||||||
|
diff --git a/MANIFEST b/MANIFEST
|
||||||
|
index 6af238c..d4f0c56 100644
|
||||||
|
--- a/MANIFEST
|
||||||
|
+++ b/MANIFEST
|
||||||
|
@@ -784,6 +784,7 @@ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm
|
||||||
|
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm
|
||||||
|
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm MakeMaker methods for QNX
|
||||||
|
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm MakeMaker methods for Unix
|
||||||
|
+cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm Independed MM methods
|
||||||
|
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm MakeMaker methods for U/WIN
|
||||||
|
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm MakeMaker methods for VMS
|
||||||
|
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm MakeMaker methods for VOS
|
||||||
|
diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..6bbc0d8
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM/Utils.pm
|
||||||
|
@@ -0,0 +1,68 @@
|
||||||
|
+package ExtUtils::MM::Utils;
|
||||||
|
+
|
||||||
|
+require 5.006;
|
||||||
|
+
|
||||||
|
+use strict;
|
||||||
|
+use vars qw($VERSION);
|
||||||
|
+$VERSION = '7.11_06';
|
||||||
|
+$VERSION = eval $VERSION; ## no critic [BuiltinFunctions::ProhibitStringyEval]
|
||||||
|
+
|
||||||
|
+=head1 NAME
|
||||||
|
+
|
||||||
|
+ExtUtils::MM::Utils - ExtUtils::MM methods without dependency on ExtUtils::MakeMaker
|
||||||
|
+
|
||||||
|
+=head1 SYNOPSIS
|
||||||
|
+
|
||||||
|
+ require ExtUtils::MM::Utils;
|
||||||
|
+ MM->maybe_command($file);
|
||||||
|
+
|
||||||
|
+=head1 DESCRIPTION
|
||||||
|
+
|
||||||
|
+This is a collection of L<ExtUtils::MM> subroutines that are used by many
|
||||||
|
+other modules but that do not need full-featured L<ExtUtils::MakeMaker>. The
|
||||||
|
+issue with L<ExtUtils::MakeMaker> is it pulls in Perl header files and that is
|
||||||
|
+an overkill for small subroutines.
|
||||||
|
+
|
||||||
|
+An example is the L<IPC::Cmd> that caused installing GCC just because of
|
||||||
|
+three-line I<maybe_command()> from L<ExtUtils::MM_Unix>.
|
||||||
|
+
|
||||||
|
+The intentions is to use L<ExtUtils::MM::Utils> instead of
|
||||||
|
+L<ExtUtils::MakeMaker> for these trivial methods. You can still call them via
|
||||||
|
+L<MM> class name.
|
||||||
|
+
|
||||||
|
+=head1 METHODS
|
||||||
|
+
|
||||||
|
+=over 4
|
||||||
|
+
|
||||||
|
+=item maybe_command
|
||||||
|
+
|
||||||
|
+Returns true, if the argument is likely to be a command.
|
||||||
|
+
|
||||||
|
+=cut
|
||||||
|
+
|
||||||
|
+if (!exists $INC{'ExtUtils/MM.pm'}) {
|
||||||
|
+ *MM::maybe_command = *ExtUtils::MM::maybe_command = \&maybe_command;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+sub maybe_command {
|
||||||
|
+ my($self,$file) = @_;
|
||||||
|
+ return $file if -x $file && ! -d $file;
|
||||||
|
+ return;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+1;
|
||||||
|
+
|
||||||
|
+=back
|
||||||
|
+
|
||||||
|
+=head1 BUGS
|
||||||
|
+
|
||||||
|
+These methods are copied from L<ExtUtils::MM_Unix>. Other operating systems
|
||||||
|
+are not supported yet. The reason is this
|
||||||
|
+L<a hack for Linux
|
||||||
|
+distributions|https://bugzilla.redhat.com/show_bug.cgi?id=1129443>.
|
||||||
|
+
|
||||||
|
+=head1 SEE ALSO
|
||||||
|
+
|
||||||
|
+L<ExtUtils::MakeMaker>, L<ExtUtils::MM>
|
||||||
|
+
|
||||||
|
+=cut
|
||||||
|
--
|
||||||
|
2.5.5
|
||||||
|
|
||||||
@ -1,11 +1,7 @@
|
|||||||
From f793042f2bac2ace9a5c0030b47b41c4db561a5b Mon Sep 17 00:00:00 2001
|
From 8067179e65a28d91f00df7d36778229a07514471 Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
|
From: Jitka Plesnikova <jplesnik@redhat.com>
|
||||||
Date: Fri, 6 Jun 2014 14:31:59 +0200
|
Date: Thu, 29 Apr 2021 12:21:18 +0200
|
||||||
Subject: [PATCH] Destroy {GDBM,NDBM,ODBM,SDBM}_File objects only from original
|
Subject: [PATCH] Destroy {GDBM,NDBM,ODBM,SDBM}_File objects only from original
|
||||||
thread context
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
This patch fixes a crash when destroing a hash tied to a *_File
|
This patch fixes a crash when destroing a hash tied to a *_File
|
||||||
database after spawning a thread:
|
database after spawning a thread:
|
||||||
@ -20,17 +16,17 @@ This crashed or paniced depending on how perl was configured.
|
|||||||
|
|
||||||
Closes RT#61912.
|
Closes RT#61912.
|
||||||
|
|
||||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
Updated original ppisar's patch for perl 5.18.2
|
||||||
---
|
---
|
||||||
ext/GDBM_File/GDBM_File.xs | 16 ++++++++++------
|
ext/GDBM_File/GDBM_File.xs | 20 ++++++++++++--------
|
||||||
ext/NDBM_File/NDBM_File.xs | 16 ++++++++++------
|
ext/NDBM_File/NDBM_File.xs | 16 ++++++++++------
|
||||||
ext/ODBM_File/ODBM_File.xs | 18 +++++++++++-------
|
ext/ODBM_File/ODBM_File.xs | 18 +++++++++++-------
|
||||||
ext/SDBM_File/SDBM_File.xs | 4 +++-
|
ext/SDBM_File/SDBM_File.xs | 4 +++-
|
||||||
t/lib/dbmt_common.pl | 35 +++++++++++++++++++++++++++++++++++
|
t/lib/dbmt_common.pl | 35 +++++++++++++++++++++++++++++++++++
|
||||||
5 files changed, 69 insertions(+), 20 deletions(-)
|
5 files changed, 71 insertions(+), 22 deletions(-)
|
||||||
|
|
||||||
diff --git a/ext/GDBM_File/GDBM_File.xs b/ext/GDBM_File/GDBM_File.xs
|
diff --git a/ext/GDBM_File/GDBM_File.xs b/ext/GDBM_File/GDBM_File.xs
|
||||||
index 33e08e2..7160f54 100644
|
index cd0bb6f..0c395ac 100644
|
||||||
--- a/ext/GDBM_File/GDBM_File.xs
|
--- a/ext/GDBM_File/GDBM_File.xs
|
||||||
+++ b/ext/GDBM_File/GDBM_File.xs
|
+++ b/ext/GDBM_File/GDBM_File.xs
|
||||||
@@ -13,6 +13,7 @@
|
@@ -13,6 +13,7 @@
|
||||||
@ -41,7 +37,7 @@ index 33e08e2..7160f54 100644
|
|||||||
GDBM_FILE dbp ;
|
GDBM_FILE dbp ;
|
||||||
SV * filter[4];
|
SV * filter[4];
|
||||||
int filtering ;
|
int filtering ;
|
||||||
@@ -98,6 +99,7 @@ gdbm_TIEHASH(dbtype, name, read_write, m
|
@@ -276,6 +277,7 @@ gdbm_TIEHASH(dbtype, name, read_write, mode)
|
||||||
}
|
}
|
||||||
if (dbp) {
|
if (dbp) {
|
||||||
RETVAL = (GDBM_File)safecalloc(1, sizeof(GDBM_File_type));
|
RETVAL = (GDBM_File)safecalloc(1, sizeof(GDBM_File_type));
|
||||||
@ -49,29 +45,34 @@ index 33e08e2..7160f54 100644
|
|||||||
RETVAL->dbp = dbp;
|
RETVAL->dbp = dbp;
|
||||||
} else {
|
} else {
|
||||||
RETVAL = NULL;
|
RETVAL = NULL;
|
||||||
@@ -118,12 +120,14 @@ gdbm_DESTROY(db)
|
@@ -289,15 +291,17 @@ gdbm_DESTROY(db)
|
||||||
PREINIT:
|
PREINIT:
|
||||||
int i = store_value;
|
int i = store_value;
|
||||||
CODE:
|
CODE:
|
||||||
- gdbm_close(db);
|
- if (gdbm_file_close(db)) {
|
||||||
|
- croak("gdbm_close: %s; %s", gdbm_strerror(gdbm_errno),
|
||||||
|
- strerror(errno));
|
||||||
|
+ if (db && db->owner == aTHX) {
|
||||||
|
+ if (gdbm_file_close(db)) {
|
||||||
|
+ croak("gdbm_close: %s; %s", gdbm_strerror(gdbm_errno),
|
||||||
|
+ strerror(errno));
|
||||||
|
+ }
|
||||||
|
+ do {
|
||||||
|
+ if (db->filter[i])
|
||||||
|
+ SvREFCNT_dec(db->filter[i]);
|
||||||
|
+ } while (i-- > 0);
|
||||||
|
+ safefree(db);
|
||||||
|
}
|
||||||
- do {
|
- do {
|
||||||
- if (db->filter[i])
|
- if (db->filter[i])
|
||||||
- SvREFCNT_dec(db->filter[i]);
|
- SvREFCNT_dec(db->filter[i]);
|
||||||
- } while (i-- > 0);
|
- } while (i-- > 0);
|
||||||
- safefree(db);
|
- safefree(db);
|
||||||
+ if (db && db->owner == aTHX) {
|
|
||||||
+ gdbm_close(db);
|
|
||||||
+ do {
|
|
||||||
+ if (db->filter[i])
|
|
||||||
+ SvREFCNT_dec(db->filter[i]);
|
|
||||||
+ } while (i-- > 0);
|
|
||||||
+ safefree(db);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
#define gdbm_FETCH(db,key) gdbm_fetch(db->dbp,key)
|
void
|
||||||
datum_value
|
gdbm_UNTIE(db, count)
|
||||||
diff --git a/ext/NDBM_File/NDBM_File.xs b/ext/NDBM_File/NDBM_File.xs
|
diff --git a/ext/NDBM_File/NDBM_File.xs b/ext/NDBM_File/NDBM_File.xs
|
||||||
index 52e60fc..af223e5 100644
|
index eed671a..651fe0f 100644
|
||||||
--- a/ext/NDBM_File/NDBM_File.xs
|
--- a/ext/NDBM_File/NDBM_File.xs
|
||||||
+++ b/ext/NDBM_File/NDBM_File.xs
|
+++ b/ext/NDBM_File/NDBM_File.xs
|
||||||
@@ -33,6 +33,7 @@ END_EXTERN_C
|
@@ -33,6 +33,7 @@ END_EXTERN_C
|
||||||
@ -103,7 +104,7 @@ index 52e60fc..af223e5 100644
|
|||||||
+ if (db && db->owner == aTHX) {
|
+ if (db && db->owner == aTHX) {
|
||||||
+ dbm_close(db->dbp);
|
+ dbm_close(db->dbp);
|
||||||
+ do {
|
+ do {
|
||||||
+ if (db->filter[i])
|
+ if (db->filter[i])
|
||||||
+ SvREFCNT_dec(db->filter[i]);
|
+ SvREFCNT_dec(db->filter[i]);
|
||||||
+ } while (i-- > 0);
|
+ } while (i-- > 0);
|
||||||
+ safefree(db);
|
+ safefree(db);
|
||||||
@ -112,7 +113,7 @@ index 52e60fc..af223e5 100644
|
|||||||
#define ndbm_FETCH(db,key) dbm_fetch(db->dbp,key)
|
#define ndbm_FETCH(db,key) dbm_fetch(db->dbp,key)
|
||||||
datum_value
|
datum_value
|
||||||
diff --git a/ext/ODBM_File/ODBM_File.xs b/ext/ODBM_File/ODBM_File.xs
|
diff --git a/ext/ODBM_File/ODBM_File.xs b/ext/ODBM_File/ODBM_File.xs
|
||||||
index d1ece7f..f7e00a0 100644
|
index 38e6dbf..4b15a42 100644
|
||||||
--- a/ext/ODBM_File/ODBM_File.xs
|
--- a/ext/ODBM_File/ODBM_File.xs
|
||||||
+++ b/ext/ODBM_File/ODBM_File.xs
|
+++ b/ext/ODBM_File/ODBM_File.xs
|
||||||
@@ -49,6 +49,7 @@ datum nextkey(datum key);
|
@@ -49,6 +49,7 @@ datum nextkey(datum key);
|
||||||
@ -146,7 +147,7 @@ index d1ece7f..f7e00a0 100644
|
|||||||
+ dbmrefcnt--;
|
+ dbmrefcnt--;
|
||||||
+ dbmclose();
|
+ dbmclose();
|
||||||
+ do {
|
+ do {
|
||||||
+ if (db->filter[i])
|
+ if (db->filter[i])
|
||||||
+ SvREFCNT_dec(db->filter[i]);
|
+ SvREFCNT_dec(db->filter[i]);
|
||||||
+ } while (i-- > 0);
|
+ } while (i-- > 0);
|
||||||
+ safefree(db);
|
+ safefree(db);
|
||||||
@ -155,7 +156,7 @@ index d1ece7f..f7e00a0 100644
|
|||||||
datum_value
|
datum_value
|
||||||
odbm_FETCH(db, key)
|
odbm_FETCH(db, key)
|
||||||
diff --git a/ext/SDBM_File/SDBM_File.xs b/ext/SDBM_File/SDBM_File.xs
|
diff --git a/ext/SDBM_File/SDBM_File.xs b/ext/SDBM_File/SDBM_File.xs
|
||||||
index 291e41b..0bdae9a 100644
|
index 0df2855..0e2bd58 100644
|
||||||
--- a/ext/SDBM_File/SDBM_File.xs
|
--- a/ext/SDBM_File/SDBM_File.xs
|
||||||
+++ b/ext/SDBM_File/SDBM_File.xs
|
+++ b/ext/SDBM_File/SDBM_File.xs
|
||||||
@@ -10,6 +10,7 @@
|
@@ -10,6 +10,7 @@
|
||||||
@ -166,7 +167,7 @@ index 291e41b..0bdae9a 100644
|
|||||||
DBM * dbp ;
|
DBM * dbp ;
|
||||||
SV * filter[4];
|
SV * filter[4];
|
||||||
int filtering ;
|
int filtering ;
|
||||||
@@ -51,6 +52,7 @@ sdbm_TIEHASH(dbtype, filename, flags, mode)
|
@@ -51,6 +52,7 @@ sdbm_TIEHASH(dbtype, filename, flags, mode, pagname=NULL)
|
||||||
}
|
}
|
||||||
if (dbp) {
|
if (dbp) {
|
||||||
RETVAL = (SDBM_File)safecalloc(1, sizeof(SDBM_File_type));
|
RETVAL = (SDBM_File)safecalloc(1, sizeof(SDBM_File_type));
|
||||||
@ -184,7 +185,7 @@ index 291e41b..0bdae9a 100644
|
|||||||
sdbm_close(db->dbp);
|
sdbm_close(db->dbp);
|
||||||
do {
|
do {
|
||||||
diff --git a/t/lib/dbmt_common.pl b/t/lib/dbmt_common.pl
|
diff --git a/t/lib/dbmt_common.pl b/t/lib/dbmt_common.pl
|
||||||
index 5d4098c..a0a4d52 100644
|
index 60c66ae..a7f81fe 100644
|
||||||
--- a/t/lib/dbmt_common.pl
|
--- a/t/lib/dbmt_common.pl
|
||||||
+++ b/t/lib/dbmt_common.pl
|
+++ b/t/lib/dbmt_common.pl
|
||||||
@@ -510,5 +510,40 @@ unlink <Op_dbmx*>, $Dfile;
|
@@ -510,5 +510,40 @@ unlink <Op_dbmx*>, $Dfile;
|
||||||
@ -229,5 +230,5 @@ index 5d4098c..a0a4d52 100644
|
|||||||
done_testing();
|
done_testing();
|
||||||
1;
|
1;
|
||||||
--
|
--
|
||||||
1.9.3
|
2.26.3
|
||||||
|
|
||||||
@ -0,0 +1,73 @@
|
|||||||
|
diff -aurpN a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
|
||||||
|
--- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2023-09-08 16:58:12.482566546 +0800
|
||||||
|
+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 2023-09-08 17:02:56.171807359 +0800
|
||||||
|
@@ -31,6 +31,7 @@ BEGIN {
|
||||||
|
$Is{IRIX} = $^O eq 'irix';
|
||||||
|
$Is{NetBSD} = $^O eq 'netbsd';
|
||||||
|
$Is{Interix} = $^O eq 'interix';
|
||||||
|
+ $Is{Linux} = $^O eq 'linux';
|
||||||
|
$Is{SunOS4} = $^O eq 'sunos';
|
||||||
|
$Is{Solaris} = $^O eq 'solaris';
|
||||||
|
$Is{SunOS} = $Is{SunOS4} || $Is{Solaris};
|
||||||
|
@@ -1060,7 +1061,7 @@ sub xs_make_dynamic_lib {
|
||||||
|
push(@m," \$(RM_F) \$\@\n");
|
||||||
|
|
||||||
|
my $libs = '$(LDLOADLIBS)';
|
||||||
|
- if (($Is{NetBSD} || $Is{Interix} || $Is{Android}) && $Config{'useshrplib'} eq 'true') {
|
||||||
|
+ if (($Is{Linux} || $Is{NetBSD} || $Is{Interix} || $Is{Android}) && $Config{'useshrplib'} eq 'true') {
|
||||||
|
# Use nothing on static perl platforms, and to the flags needed
|
||||||
|
# to link against the shared libperl library on shared perl
|
||||||
|
# platforms. We peek at lddlflags to see if we need -Wl,-R
|
||||||
|
@@ -1073,6 +1074,11 @@ sub xs_make_dynamic_lib {
|
||||||
|
# The Android linker will not recognize symbols from
|
||||||
|
# libperl unless the module explicitly depends on it.
|
||||||
|
$libs .= ' "-L$(PERL_INC)" -lperl';
|
||||||
|
+ } else {
|
||||||
|
+ if ($ENV{PERL_CORE}) {
|
||||||
|
+ $libs .= ' "-L$(PERL_INC)"';
|
||||||
|
+ }
|
||||||
|
+ $libs .= ' -lperl';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -aurpN a/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm
|
||||||
|
--- a/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm 1970-01-01 08:00:00.000000000 +0800
|
||||||
|
+++ b/dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm 2023-09-08 17:09:16.773017629 +0800
|
||||||
|
@@ -0,0 +1,26 @@
|
||||||
|
+package ExtUtils::CBuilder::Platform::linux;
|
||||||
|
+
|
||||||
|
+use strict;
|
||||||
|
+use ExtUtils::CBuilder::Platform::Unix;
|
||||||
|
+use File::Spec;
|
||||||
|
+
|
||||||
|
+use vars qw($VERSION @ISA);
|
||||||
|
+$VERSION = '0.280236';
|
||||||
|
+our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
|
||||||
|
+
|
||||||
|
+sub link {
|
||||||
|
+ my ($self, %args) = @_;
|
||||||
|
+ my $cf = $self->{config};
|
||||||
|
+
|
||||||
|
+ # Link XS modules to libperl.so explicitly because multiple
|
||||||
|
+ # dlopen(, RTLD_LOCAL) hides libperl symbols from XS module.
|
||||||
|
+ local $cf->{lddlflags} = $cf->{lddlflags};
|
||||||
|
+ if ($ENV{PERL_CORE}) {
|
||||||
|
+ $cf->{lddlflags} .= ' -L' . $self->perl_inc();
|
||||||
|
+ }
|
||||||
|
+ $cf->{lddlflags} .= ' -lperl';
|
||||||
|
+
|
||||||
|
+ return $self->SUPER::link(%args);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+1;
|
||||||
|
diff -aurpN a/MANIFEST b/MANIFEST
|
||||||
|
--- a/MANIFEST 2023-09-08 16:59:28.747862538 +0800
|
||||||
|
+++ b/MANIFEST 2023-09-08 17:00:43.036559444 +0800
|
||||||
|
@@ -3535,6 +3535,7 @@ dist/ExtUtils-CBuilder/lib/ExtUtils/CBui
|
||||||
|
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm CBuilder methods for cygwin
|
||||||
|
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm CBuilder methods for darwin
|
||||||
|
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm CBuilder methods for OSF
|
||||||
|
+dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/linux.pm CBuilder methods for Linux
|
||||||
|
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm CBuilder methods for OS/2
|
||||||
|
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm CBuilder methods for Unix
|
||||||
|
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm CBuilder methods for VMS
|
||||||
Binary file not shown.
@ -0,0 +1,40 @@
|
|||||||
|
From aacd2398e766500cb5d83c4d76b642fcf31d997a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sergey Poznyakoff <gray@gnu.org>
|
||||||
|
Date: Wed, 23 Jun 2021 10:26:50 +0300
|
||||||
|
Subject: [PATCH 1/3] Fix GDBM_File to compile with version 1.20 and earlier
|
||||||
|
|
||||||
|
* ext/GDBM_File/GDBM_File.xs (ITEM_NOT_FOUND): Define conditionally,
|
||||||
|
depending on the GDBM_VERSION_MAJOR and GDBM_VERSION_MINOR.
|
||||||
|
Don't assume GDBM_ITEM_NOT_FOUND is a define (it isn't since
|
||||||
|
gdbm commit d3e27957).
|
||||||
|
---
|
||||||
|
ext/GDBM_File/GDBM_File.xs | 11 +++++------
|
||||||
|
1 file changed, 5 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/ext/GDBM_File/GDBM_File.xs b/ext/GDBM_File/GDBM_File.xs
|
||||||
|
index cd0bb6f26f..494c2889ca 100644
|
||||||
|
--- a/ext/GDBM_File/GDBM_File.xs
|
||||||
|
+++ b/ext/GDBM_File/GDBM_File.xs
|
||||||
|
@@ -145,14 +145,13 @@ output_datum(pTHX_ SV *arg, char *str, int size)
|
||||||
|
#define gdbm_setopt(db,optflag,optval,optlen) not_here("gdbm_setopt")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#ifndef GDBM_ITEM_NOT_FOUND
|
||||||
|
-# define GDBM_ITEM_NOT_FOUND GDBM_NO_ERROR
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
+#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR < 13
|
||||||
|
/* Prior to 1.13, gdbm_fetch family functions set gdbm_errno to GDBM_NO_ERROR
|
||||||
|
if the requested key did not exist */
|
||||||
|
-#define ITEM_NOT_FOUND() \
|
||||||
|
- (gdbm_errno == GDBM_ITEM_NOT_FOUND || gdbm_errno == GDBM_NO_ERROR)
|
||||||
|
+# define ITEM_NOT_FOUND() (gdbm_errno == GDBM_NO_ERROR)
|
||||||
|
+#else
|
||||||
|
+# define ITEM_NOT_FOUND() (gdbm_errno == GDBM_ITEM_NOT_FOUND)
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#define CHECKDB(db) do { \
|
||||||
|
if (!db->dbp) { \
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
From ea57297a58b8f10ab885c19eec48ea076116cc1f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sergey Poznyakoff <gray@gnu.org>
|
||||||
|
Date: Wed, 23 Jun 2021 14:24:47 +0300
|
||||||
|
Subject: [PATCH 2/3] Raise version number in ext/GDBM_File/GDBM_File.pm
|
||||||
|
|
||||||
|
---
|
||||||
|
ext/GDBM_File/GDBM_File.pm | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/ext/GDBM_File/GDBM_File.pm b/ext/GDBM_File/GDBM_File.pm
|
||||||
|
index d837536f80..cb08d091b8 100644
|
||||||
|
--- a/ext/GDBM_File/GDBM_File.pm
|
||||||
|
+++ b/ext/GDBM_File/GDBM_File.pm
|
||||||
|
@@ -363,7 +363,7 @@ require XSLoader;
|
||||||
|
);
|
||||||
|
|
||||||
|
# This module isn't dual life, so no need for dev version numbers.
|
||||||
|
-$VERSION = '1.19';
|
||||||
|
+$VERSION = '1.20';
|
||||||
|
|
||||||
|
XSLoader::load();
|
||||||
|
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
||||||
112
perl.spec
112
perl.spec
@ -14,30 +14,37 @@
|
|||||||
#provides module without verion, no need to provide
|
#provides module without verion, no need to provide
|
||||||
%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\((charnames|DynaLoader|DB)\\)$
|
%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\((charnames|DynaLoader|DB)\\)$
|
||||||
|
|
||||||
%global perl_version 5.32.0
|
%global perl_version 5.34.0
|
||||||
|
|
||||||
%global perl_compat perl(:MODULE_COMPAT_5.32.0)
|
%global perl_compat perl(:MODULE_COMPAT_5.34.0)
|
||||||
|
|
||||||
Name: perl
|
Name: perl
|
||||||
License: (GPL+ or Artistic) and (GPLv2+ or Artistic) and MIT and UCD and Public Domain and BSD
|
License: (GPL+ or Artistic) and (GPLv2+ or Artistic) and MIT and UCD and Public Domain and BSD
|
||||||
Epoch: 4
|
Epoch: 4
|
||||||
Version: %{perl_version}
|
Version: %{perl_version}
|
||||||
Release: 8
|
Release: 13
|
||||||
Summary: A highly capable, feature-rich programming language
|
Summary: A highly capable, feature-rich programming language
|
||||||
Url: https://www.perl.org/
|
Url: https://www.perl.org/
|
||||||
Source0: https://www.cpan.org/src/5.0/%{name}-%{version}.tar.xz
|
Source0: https://www.cpan.org/src/5.0/%{name}-%{version}.tar.xz
|
||||||
|
|
||||||
# PATCH-FEATURE-OPENEULER
|
Patch1: perl-5.22.1-Provide-ExtUtils-MM-methods-as-standalone-ExtUtils-M.patch
|
||||||
Patch1: change-lib-to-lib64.patch
|
Patch2: perl-5.16.3-create_libperl_soname.patch
|
||||||
# PATCH-FEATURE-OPENEULER
|
Patch3: perl-5.22.0-Install-libperl.so-to-shrpdir-on-Linux.patch
|
||||||
Patch2: disable-rpath-by-default.patch
|
Patch4: perl-5.34.0-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch
|
||||||
# PATCH-FIX-OPENEULER
|
Patch5: perl-5.35.1-Fix-GDBM_File-to-compile-with-version-1.20-and-earli.patch
|
||||||
Patch3: create-libperl-soname.patch
|
Patch6: perl-5.35.1-Raise-version-number-in-ext-GDBM_File-GDBM_File.pm.patch
|
||||||
# PATCH-FIX-OPENEULER--rh#1107543, RT#61912
|
Patch7: change-lib-to-lib64.patch
|
||||||
Patch4: perl-5.18.2-Destroy-GDBM-NDBM-ODBM-SDBM-_File-objects-only-from-.patch
|
Patch8: disable-rpath-by-default.patch
|
||||||
Patch5: backport-perl-5.22.0-Install-libperl.so-to-shrpdir-on-Linux.patch
|
Patch9: perl-5.34.0-Link-XS-modules-to-libperl.so-with-EU-MM-on-Linux.patch
|
||||||
|
|
||||||
BuildRequires: gcc bash findutils coreutils make tar procps bzip2-devel gdbm-devel
|
Patch6000: backport-CVE-2021-36770.patch
|
||||||
|
Patch6001: backport-CVE-2023-31484.patch
|
||||||
|
Patch6002: backport-CVE-2023-31486.patch
|
||||||
|
Patch6003: backport-CVE-2022-48522.patch
|
||||||
|
Patch6004: backport-CVE-2023-47100-CVE-2023-47038.patch
|
||||||
|
Patch6005: backport-CVE-2023-47039.patch
|
||||||
|
|
||||||
|
BuildRequires: gcc bash findutils coreutils make tar procps bzip2-devel gdbm-devel perl-File-Compare perl-File-Find
|
||||||
BuildRequires: zlib-devel systemtap-sdt-devel perl-interpreter perl-generators
|
BuildRequires: zlib-devel systemtap-sdt-devel perl-interpreter perl-generators
|
||||||
|
|
||||||
Requires: perl-libs = %{epoch}:%{version}-%{release}
|
Requires: perl-libs = %{epoch}:%{version}-%{release}
|
||||||
@ -63,11 +70,11 @@ Requires: perl-Module-Metadata perl-Sys-Syslog perl-PerlIO-via-QuotedPrint
|
|||||||
Provides: perl-Attribute-Handlers perl-interpreter perl(bytes_heavy.pl) perl(dumpvar.pl) perl(perl5db.pl)
|
Provides: perl-Attribute-Handlers perl-interpreter perl(bytes_heavy.pl) perl(dumpvar.pl) perl(perl5db.pl)
|
||||||
Provides: perl-ExtUtils-Embed perl-ExtUtils-Miniperl perl-IO perl-IO-Zlib perl-Locale-Maketext-Simple perl-Math-Complex
|
Provides: perl-ExtUtils-Embed perl-ExtUtils-Miniperl perl-IO perl-IO-Zlib perl-Locale-Maketext-Simple perl-Math-Complex
|
||||||
Provides: perl-Module-Loaded perl-Net-Ping perl-Pod-Html perl-SelfLoader perl-Test perl-Time-Piece perl-libnetcfg perl-open perl-utils
|
Provides: perl-Module-Loaded perl-Net-Ping perl-Pod-Html perl-SelfLoader perl-Test perl-Time-Piece perl-libnetcfg perl-open perl-utils
|
||||||
Provides: perl-Errno perl-Memoize
|
Provides: perl-Errno perl-Memoize perl-File-Compare perl-File-Find
|
||||||
|
|
||||||
Obsoletes: perl-Attribute-Handlers perl-interpreter perl-Errno perl-ExtUtils-Embed perl-Net-Ping
|
Obsoletes: perl-Attribute-Handlers perl-interpreter perl-Errno perl-ExtUtils-Embed perl-Net-Ping
|
||||||
Obsoletes: perl-ExtUtils-Miniperl perl-IO perl-IO-Zlib perl-Locale-Maketext-Simple perl-Math-Complex perl-Memoize perl-Module-Loaded
|
Obsoletes: perl-ExtUtils-Miniperl perl-IO perl-IO-Zlib perl-Locale-Maketext-Simple perl-Math-Complex perl-Memoize perl-Module-Loaded
|
||||||
Obsoletes: perl-Pod-Html perl-SelfLoader perl-Test perl-Time-Piece perl-libnetcfg perl-open perl-utils
|
Obsoletes: perl-Pod-Html perl-SelfLoader perl-Test perl-Time-Piece perl-libnetcfg perl-open perl-utils perl-File-Compare perl-File-Find
|
||||||
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -78,9 +85,8 @@ prototyping and large scale development projects.
|
|||||||
%package libs
|
%package libs
|
||||||
Summary: The libraries for the perl
|
Summary: The libraries for the perl
|
||||||
License: (GPL+ or Artistic) and HSRL and MIT and UCD
|
License: (GPL+ or Artistic) and HSRL and MIT and UCD
|
||||||
Provides: perl(:MODULE_COMPAT_5.28.0) perl(:VERSION) = 5.28.0
|
|
||||||
Provides: %perl_compat
|
Provides: %perl_compat
|
||||||
Provides: perl(:VERSION) = %{perl_version} libperl.so.5.28()(64bit)
|
Provides: perl(:VERSION) = %{perl_version}
|
||||||
Provides: perl(:WITH_64BIT) perl(:WITH_ITHREADS) perl(:WITH_THREADS)
|
Provides: perl(:WITH_64BIT) perl(:WITH_ITHREADS) perl(:WITH_THREADS)
|
||||||
Provides: perl(:WITH_LARGEFILES) perl(:WITH_PERLIO) perl(unicore::Name)
|
Provides: perl(:WITH_LARGEFILES) perl(:WITH_PERLIO) perl(unicore::Name)
|
||||||
Provides: perl(utf8_heavy.pl)
|
Provides: perl(utf8_heavy.pl)
|
||||||
@ -94,7 +100,8 @@ Summary: Development files for %{name}
|
|||||||
License: (GPL+ or Artistic) and UCD
|
License: (GPL+ or Artistic) and UCD
|
||||||
|
|
||||||
Requires: perl = %{epoch}:%{version}-%{release} system-rpm-config systemtap-sdt-devel
|
Requires: perl = %{epoch}:%{version}-%{release} system-rpm-config systemtap-sdt-devel
|
||||||
Requires: perl(ExtUtils::ParseXS) perl(:MODULE_COMPAT_5.28.0) perl(Devel::PPPort)
|
Requires: perl(ExtUtils::ParseXS) perl(Devel::PPPort)
|
||||||
|
Requires: %perl_compat
|
||||||
|
|
||||||
Provides: perl-Devel-Peek perl-Devel-SelfStubber perl-tests
|
Provides: perl-Devel-Peek perl-Devel-SelfStubber perl-tests
|
||||||
|
|
||||||
@ -405,6 +412,9 @@ make test_harness
|
|||||||
%exclude %{perl_datadir}/{integer.pm,strict.pm,unicore,utf8.pm}
|
%exclude %{perl_datadir}/{integer.pm,strict.pm,unicore,utf8.pm}
|
||||||
%exclude %{perl_datadir}/{utf8_heavy.pl,warnings.pm,XSLoader.pm}
|
%exclude %{perl_datadir}/{utf8_heavy.pl,warnings.pm,XSLoader.pm}
|
||||||
%exclude %dir %{perl_vendor_datadir}
|
%exclude %dir %{perl_vendor_datadir}
|
||||||
|
%dir %{perl_datadir}/File
|
||||||
|
%{perl_datadir}/File/Compare.pm
|
||||||
|
%{perl_datadir}/File/Find.pm
|
||||||
|
|
||||||
%license Artistic Copying
|
%license Artistic Copying
|
||||||
%doc AUTHORS
|
%doc AUTHORS
|
||||||
@ -483,6 +493,66 @@ make test_harness
|
|||||||
%{_mandir}/man3/*
|
%{_mandir}/man3/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Dec 11 2023 huyubiao <huyubiao@huawei.com> - 4:5.34.0-13
|
||||||
|
- Fix CVE-2023-47100
|
||||||
|
|
||||||
|
* Fri Dec 8 2023 hongjinghao <hongjinghao@huawei.com> - 4:5.34.0-12
|
||||||
|
- Fix CVE-2023-47039
|
||||||
|
|
||||||
|
* Mon Nov 27 2023 hongjinghao <hongjinghao@huawei.com> - 4:5.34.0-11
|
||||||
|
- Fix CVE-2023-47038
|
||||||
|
|
||||||
|
* Fri Sep 8 2023 zhangzikang <zhangzikang@kylinos.cn> - 4:5.34.0-10
|
||||||
|
- Type:bugfix
|
||||||
|
- ID:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:fix-perl-re.so-undefined-symbol-error
|
||||||
|
|
||||||
|
* Fri Aug 25 2023 yangmingtai <yangmingtai@huawei.com> - 4:5.34.0-9
|
||||||
|
- fix CVE-2022-48522
|
||||||
|
|
||||||
|
* Mon Jun 26 2023 yangmingtai <yangmingtai@huawei.com> - 4:5.34.0-8
|
||||||
|
- fix CVE-2023-31486
|
||||||
|
|
||||||
|
* Mon May 15 2023 dongyuzhen <dongyuzhen@h-partners.com> 4:5.34.0-7
|
||||||
|
- fix CVE-2023-31484
|
||||||
|
|
||||||
|
* Fri Jul 01 2022 dongyuzhen <dongyuzhen@h-partners.com> 4:5.34.0-6
|
||||||
|
- Type:bugfix
|
||||||
|
- ID:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:Add patches that are deleted during the upgrade
|
||||||
|
|
||||||
|
* Tue Jun 21 2022 tianwei<tianwei@h-partners.com> 4:5.34.0-5
|
||||||
|
- Type:bugfix
|
||||||
|
- ID:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:delete maninfo of Compare and Find packages from perl
|
||||||
|
|
||||||
|
* Mon Mar 28 2022 tianwei<tianwei@h-partners.com> 4:5.34.0-4
|
||||||
|
- Type:bugfix
|
||||||
|
- ID:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:delete low version files
|
||||||
|
|
||||||
|
* Thu Feb 24 2022 yuanxin<yuanxin24@h-partners.com> 4:5.34.0-3
|
||||||
|
- Type:CVE
|
||||||
|
- ID:CVE-2021-36770
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:fix CVE-2021-36770
|
||||||
|
|
||||||
|
* Wed Jan 05 2022 tianwei<tianwei12@huawei.com> 4:5.34.0-2
|
||||||
|
- Type:bugfix
|
||||||
|
- ID:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:fix perl version required for devel
|
||||||
|
|
||||||
|
* Wed Dec 29 2021 tianwei<tianwei12@huawei.com> 4:5.34.0-1
|
||||||
|
- Type:bugfix
|
||||||
|
- ID:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:upgrade version to 5.34.0
|
||||||
|
|
||||||
* Thu Aug 5 2021 yuanxin<yuanxin24@huawei.com> 4:5.32.0-8
|
* Thu Aug 5 2021 yuanxin<yuanxin24@huawei.com> 4:5.32.0-8
|
||||||
- Type:bugfix
|
- Type:bugfix
|
||||||
- ID:NA
|
- ID:NA
|
||||||
@ -507,14 +577,14 @@ make test_harness
|
|||||||
- SUG:NA
|
- SUG:NA
|
||||||
- DESC:remove perl-DB_File
|
- DESC:remove perl-DB_File
|
||||||
|
|
||||||
* Thu Mar 30 2021 shenyangyang<shenyangyang4@huawei.com> - 4:5.32.0-4
|
* Tue Mar 30 2021 shenyangyang<shenyangyang4@huawei.com> - 4:5.32.0-4
|
||||||
- Type:bugfix
|
- Type:bugfix
|
||||||
- ID:NA
|
- ID:NA
|
||||||
- SUG:NA
|
- SUG:NA
|
||||||
- DESC:Rebuild for openEuler-rpm-config moving /usr/lib/rpm/openEuler/xxxx
|
- DESC:Rebuild for openEuler-rpm-config moving /usr/lib/rpm/openEuler/xxxx
|
||||||
to /usr/lib/xxxx
|
to /usr/lib/xxxx
|
||||||
|
|
||||||
* Web Mar 03 2021 wuchaochao<wuchaochao4@huawei.com> - 4:5.32.0-3
|
* Wed Mar 03 2021 wuchaochao<wuchaochao4@huawei.com> - 4:5.32.0-3
|
||||||
- Type:bugfix
|
- Type:bugfix
|
||||||
- ID:NA
|
- ID:NA
|
||||||
- SUG:NA
|
- SUG:NA
|
||||||
@ -556,7 +626,7 @@ make test_harness
|
|||||||
- SUG:NA
|
- SUG:NA
|
||||||
- DESC:add macros that used for perl
|
- DESC:add macros that used for perl
|
||||||
|
|
||||||
* Fri Jan 2 2020 openEuler Buildteam <buildteam@openeuler.org> - 4:5.28.0-430
|
* Thu Jan 2 2020 openEuler Buildteam <buildteam@openeuler.org> - 4:5.28.0-430
|
||||||
- Type:NA
|
- Type:NA
|
||||||
- ID:NA
|
- ID:NA
|
||||||
- SUG:NA
|
- SUG:NA
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user