mirror of
https://git.yoctoproject.org/poky
synced 2026-03-19 13:49:41 +01:00
perl: Fix setgroup call regression from 5.30
The upgrade from 5.28 to 5.30 caused acl's ptests to fail. The issue is that the new function changes the endptr to the end of the scanned number and this now needs to be reset to the end of the string for each iteration of the loop. [YOCTO #13391] (From OE-Core rev: c1c4907f0e548564e6744fef1cb93c74bd330c55) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
49
meta/recipes-devtools/perl-sanity/files/fix-setgroup.patch
Normal file
49
meta/recipes-devtools/perl-sanity/files/fix-setgroup.patch
Normal file
@@ -0,0 +1,49 @@
|
||||
Test script to reproduce the problem:
|
||||
|
||||
#!/usr/bin/env perl
|
||||
$) = "2 2";
|
||||
print $!;
|
||||
|
||||
Result from perl 5.28 under strace:
|
||||
|
||||
setgroups(1, [2]) = 0
|
||||
setresgid(-1, 2, -1) = 0
|
||||
|
||||
Result from perl 5.30 under strace:
|
||||
|
||||
setgroups(1, [-1]) = -1 EINVAL (Invalid argument)
|
||||
setresgid(-1, 2, -1) = 0
|
||||
|
||||
Patch which broke this upstream:
|
||||
https://perl5.git.perl.org/perl.git/commitdiff/5d4a52b5c68a11bfc97c2e24806993b84a61eade
|
||||
|
||||
Issue is that the new function changes the endptr to the end of the
|
||||
scanned number and needs to be reset to the end of the string for
|
||||
each iteration of the loop.
|
||||
|
||||
[YOCTO #13391]
|
||||
|
||||
RP
|
||||
2019/6/14
|
||||
Upstream-Status: Pending
|
||||
|
||||
Index: perl-5.30.0/mg.c
|
||||
===================================================================
|
||||
--- perl-5.30.0.orig/mg.c
|
||||
+++ perl-5.30.0/mg.c
|
||||
@@ -3179,6 +3256,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
|
||||
const char *p = SvPV_const(sv, len);
|
||||
Groups_t *gary = NULL;
|
||||
const char* endptr = p + len;
|
||||
+ const char* realend = p + len;
|
||||
UV uv;
|
||||
#ifdef _SC_NGROUPS_MAX
|
||||
int maxgrp = sysconf(_SC_NGROUPS_MAX);
|
||||
@@ -3209,6 +3287,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
|
||||
Newx(gary, i + 1, Groups_t);
|
||||
else
|
||||
Renew(gary, i + 1, Groups_t);
|
||||
+ endptr = realend;
|
||||
if (grok_atoUV(p, &uv, &endptr))
|
||||
gary[i] = (Groups_t)uv;
|
||||
else {
|
||||
@@ -18,6 +18,7 @@ SRC_URI = "https://www.cpan.org/src/5.0/perl-${PV}.tar.gz;name=perl \
|
||||
file://0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch \
|
||||
file://perl-dynloader.patch \
|
||||
file://0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch \
|
||||
file://fix-setgroup.patch \
|
||||
"
|
||||
SRC_URI_append_class-native = " \
|
||||
file://perl-configpm-switch.patch \
|
||||
|
||||
Reference in New Issue
Block a user