SHA256
1
0
forked from pool/perl
perl/perl-saverecontext.diff
Stephan Kulow 73e2f4545b Accepting request 494775 from home:coolo:branches:openSUSE:Factory
- Fix building with zlib-1.2.10 (RT#119762):
  * Compress-Raw-Zlib-2.071-Adapt-tests-to-zlib-1.2.11.patch

- Update to perl-5.24.1
  -Di switch is now required for PerlIO debugging output
    Previously PerlIO debugging output would be sent to the file specified
    by the "PERLIO_DEBUG" environment variable if perl wasn't running setuid
    and the -T or -t switches hadn't been parsed yet.
    If perl performed output at a point where it hadn't yet parsed its
    switches this could result in perl creating or overwriting the file
    named by "PERLIO_DEBUG" even when the -T switch had been supplied.
    Perl now requires the -Di switch to produce PerlIO debugging output. By
    default this is written to "stderr", but can optionally be redirected to
    a file by setting the "PERLIO_DEBUG" environment variable.
    If perl is running setuid or the -T switch was supplied "PERLIO_DEBUG"
    is ignored and the debugging output is sent to "stderr" as for any other
    -D switch.
  Core modules and tools no longer search "." for optional modules
    The tools and many modules supplied in core no longer search the default
    current directory entry in @INC for optional modules. For example,
    Storable will remove the final "." from @INC before trying to load
    Log::Agent.
    This prevents an attacker injecting an optional module into a process
    run by another user where the current directory is writable by the
    attacker, e.g. the /tmp directory.
- Refresh patches

OBS-URL: https://build.opensuse.org/request/show/494775
OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl?expand=0&rev=148
2017-05-17 10:00:29 +00:00

29 lines
855 B
Diff

Index: regcomp.c
===================================================================
--- regcomp.c.orig
+++ regcomp.c
@@ -19613,8 +19613,21 @@ Perl_save_re_context(pTHX)
if (gvp) {
GV * const gv = *gvp;
- if (SvTYPE(gv) == SVt_PVGV && GvSV(gv))
- save_scalar(gv);
+ if (SvTYPE(gv) == SVt_PVGV && GvSV(gv)) {
+ /* this is a copy of save_scalar() without the GETMAGIC call, RT#76538 */
+ SV ** const sptr = &GvSVn(gv);
+ SV * osv = *sptr;
+ SV * nsv = newSV(0);
+ save_pushptrptr(SvREFCNT_inc_simple(gv), SvREFCNT_inc(osv), SAVEt_SV);
+ if (SvTYPE(osv) >= SVt_PVMG && SvMAGIC(osv)) {
+ if (SvGMAGICAL(osv)) {
+ SvFLAGS(osv) |= (SvFLAGS(osv) &
+ (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
+ }
+ mg_localize(osv, nsv, (bool)1);
+ }
+ *sptr = nsv;
+ }
}
}
}