Projects
openEuler:Mainline
perl-Devel-Size
Sign Up
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 2
View file
_service:tar_scm:perl-Devel-Size.spec
Changed
@@ -1,11 +1,13 @@ Name: perl-Devel-Size Version: 0.82 -Release: 5 +Release: 6 Summary: Perl extension for finding the memory usage of Perl variables License: GPL+ or Artistic URL: https://metacpan.org/release/Devel-Size Source0: https://cpan.metacpan.org/modules/by-module/Devel/Devel-Size-%{version}.tar.gz +Patch1: backport-Fix-for-uninitialised-reads-from-MULTICONCAT-uncover.patch + BuildRequires: findutils gcc make perl-interpreter perl-generators perl(ExtUtils::MakeMaker) perl(Test::More) BuildRequires: perl-devel Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version)) @@ -22,6 +24,7 @@ %prep %setup -q -n Devel-Size-%{version} +%autosetup -n Devel-Size-%{version} -p1 %build perl Makefile.PL NO_PACKLIST=1 INSTALLDIRS=vendor @@ -43,6 +46,12 @@ %{_mandir}/man3/* %changelog +* Thu Sep 22 2022 wangjiang <wangjiang37@h-partners.com> - 0.82-6 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix test failed + * Wed May 13 2020 openEuler Buildteam <buildteam@openeuler.org> - 0.82-5 - Add build requires of perl-devel
View file
_service:tar_scm:backport-Fix-for-uninitialised-reads-from-MULTICONCAT-uncover.patch
Added
@@ -0,0 +1,205 @@ +From a8654aab512862133ac607ca3c97cc82f63f59cb Mon Sep 17 00:00:00 2001 +From: root <root@localhost.com> +Date: Wed, 21 Sep 2022 17:21:09 +0800 +Subject: * PATCH Fix for uninitialised reads from MULTICONCAT uncovered by + CPAN #127932 + * Handle allocations in MULTICONCAT's aux structure explicitly. + * Handle ARGCHECK and ARGELEM. + +Related Issue: https://rt.cpan.org/Public/Bug/Display.html?id=127932 +Patch Source : https://metacpan.org/release/NWCLARK/Devel-Size-0.82_50/diff/NWCLARK%2FDevel-Size-0.82 +--- + CHANGES | 5 +++++ + MANIFEST | 1 + + META.json | 6 +++--- + META.yml | 2 +- + Size.xs | 50 +++++++++++++++++++++++++++++++++++++++++++++-- + lib/Devel/Size.pm | 2 +- + t/basic.t | 2 +- + t/code.t | 15 +++++++++++++- + 8 files changed, 74 insertions(+), 9 deletions(-) + +diff --git a/CHANGES b/CHANGES +index 246c4d1..b09b661 100644 +--- a/CHANGES ++++ b/CHANGES +@@ -1,5 +1,10 @@ + Revision history for Perl extension Devel::Size. + ++0.82_50 2019-04-16 nicholas ++ * Fix for uninitialised reads from MULTICONCAT uncovered by CPAN #127932 ++ * Handle allocations in MULTICONCAT's aux structure explicitly. ++ * Handle ARGCHECK and ARGELEM. ++ + 0.82 2018-06-23 nicholas + * Improve comment describing the fix in cmp_array_ro(). + * Fix some dates in this file. +diff --git a/MANIFEST b/MANIFEST +index 54acc82..2a2e7c9 100644 +--- a/MANIFEST ++++ b/MANIFEST +@@ -15,6 +15,7 @@ t/pod.t + t/pod_cov.t + t/pvbm.t + t/recurse.t ++t/signatures.t + t/warnings.t A rather exhaustive test for the non-exceptional warnings + typemap The typemap for UV, missing from 5.005_xx + META.json Module JSON meta-data (added by MakeMaker) +diff --git a/META.json b/META.json +index d122214..5b5adb3 100644 +--- a/META.json ++++ b/META.json +@@ -38,7 +38,7 @@ + } + } + }, +- "release_status" : "stable", +- "version" : "0.82", +- "x_serialization_backend" : "JSON::PP version 2.97001" ++ "release_status" : "unstable", ++ "version" : "0.82_50", ++ "x_serialization_backend" : "JSON::PP version 4.02" + } +diff --git a/META.yml b/META.yml +index bf9125a..17d8bb6 100644 +--- a/META.yml ++++ b/META.yml +@@ -21,5 +21,5 @@ requires: + Test::More: '0' + XSLoader: '0' + perl: '5.005' +-version: '0.82' ++version: 0.82_50 + x_serialization_backend: 'CPAN::Meta::YAML version 0.018' +diff --git a/Size.xs b/Size.xs +index e0ef024..4552707 100644 +--- a/Size.xs ++++ b/Size.xs +@@ -572,13 +572,15 @@ op_size(pTHX_ const OP * const baseop, struct state *st) + #endif + #ifdef OA_UNOP_AUX + case OPc_UNAUXOP: TAG; +- st->total_size += sizeof(struct unop_aux) + sizeof(UNOP_AUX_item) * (cUNOP_AUXx(baseop)->op_aux-1.uv+1); + op_size(aTHX_ ((UNOP *)baseop)->op_first, st); +- if (baseop->op_type == OP_MULTIDEREF) { ++ switch(baseop->op_type) { ++ case OP_MULTIDEREF: ++ { + UNOP_AUX_item *items = cUNOP_AUXx(baseop)->op_aux; + UV actions = items->uv; + bool last = 0; + bool is_hash = 0; ++ st->total_size += sizeof(struct unop_aux) + sizeof(UNOP_AUX_item) * (cUNOP_AUXx(baseop)->op_aux-1.uv+1); + while (!last) { + switch (actions & MDEREF_ACTION_MASK) { + case MDEREF_reload: +@@ -631,6 +633,50 @@ op_size(pTHX_ const OP * const baseop, struct state *st) + } + actions >>= MDEREF_SHIFT; + } ++ TAG;break; ++ } ++#ifdef OPpMULTICONCAT_STRINGIFY ++ case OP_MULTICONCAT: ++ { ++ UNOP_AUX_item *aux = cUNOP_AUXx(baseop)->op_aux; ++ SSize_t nargs = auxPERL_MULTICONCAT_IX_NARGS.ssize; ++ const char *plain_pv = auxPERL_MULTICONCAT_IX_PLAIN_PV.pv; ++ SSize_t plain_size = auxPERL_MULTICONCAT_IX_PLAIN_LEN.ssize; ++ const char *utf8_pv = auxPERL_MULTICONCAT_IX_UTF8_PV.pv; ++ SSize_t utf8_size = auxPERL_MULTICONCAT_IX_UTF8_LEN.ssize; ++ const int has_variant = plain_pv && utf8_pv && plain_pv != utf8_pv; ++ st->total_size += sizeof(UNOP_AUX_item) ++ * ( ++ PERL_MULTICONCAT_HEADER_SIZE ++ + ((nargs + 1) * (has_variant ? 2 : 1)) ++ ); ++ ++ if (has_variant) { ++ st->total_size += plain_size + utf8_size; ++ } else if (plain_pv) { ++ st->total_size += plain_size; ++ } else if (utf8_pv) { ++ st->total_size += utf8_size; ++ } /* else surely unreachable? */ ++ TAG;break; ++ } ++#endif ++#ifdef OPpARGELEM_MASK ++ case OP_ARGCHECK: ++ st->total_size += sizeof(UNOP_AUX_item) * 3; ++ TAG;break; ++ case OP_ARGELEM: ++ /* This OP is a sneaky hack, and stuffs an integer into the ++ pointer. So there is no allocation to total up. */ ++ TAG;break; ++#endif ++ default: ++ /* Unknown multiop */ ++ TAG; ++ if (st->go_yell) { ++ warn("Devel::Size: Can't calculate complete size for uknown UNOP_AUX %u\n", ++ baseop->op_type); ++ } + } + TAG;break; + #endif +diff --git a/lib/Devel/Size.pm b/lib/Devel/Size.pm +index 80f530b..3299224 100644 +--- a/lib/Devel/Size.pm ++++ b/lib/Devel/Size.pm +@@ -14,7 +14,7 @@ require XSLoader; + # This allows declaration use Devel::Size ':all'; + %EXPORT_TAGS = ( 'all' => \@EXPORT_OK ); + +-$VERSION = '0.82'; ++$VERSION = '0.82_50'; + + XSLoader::load( __PACKAGE__); + +diff --git a/t/basic.t b/t/basic.t +index fd79c77..c3c0930 100644 +--- a/t/basic.t ++++ b/t/basic.t +@@ -31,7 +31,7 @@ can_ok ('Devel::Size', qw/ + /); + + die ("Uhoh, test uses an outdated version of Devel::Size") +- unless is ($Devel::Size::VERSION, '0.82', 'VERSION MATCHES'); ++ unless is ($Devel::Size::VERSION, '0.82_50', 'VERSION MATCHES'); + + ############################################################################# + # some basic checks: +diff --git a/t/code.t b/t/code.t +index 0cf3a4d..ae04070 100644 +--- a/t/code.t ++++ b/t/code.t +@@ -1,7 +1,7 @@ + #!/usr/bin/perl -w + + use strict; +-use Test::More tests => 18; ++use Test::More tests => 20; + use Devel::Size ':all'; + + # For me, for some files locally, I'm seeing failures +@@ -145,3 +145,16 @@ my $ode_size = total_size(\&ode); + + cmp_ok($ode_size, '<', $two_lex_size + 768, + '&ode is bigger than a sub with two lexicals by less than 768 bytes'); ++ ++# This is a copy of the simplest multiconcat test from t/opbasic/concat.t ++# Like there, this is mostly intended for ASAN to hit: ++sub multiconcat { ++ my $s = chr 0x100; ++ my $t = "\x80" x 1024; ++ $s .= "-$t-"; ++ is(length($s), 1027, "utf8 dest with non-utf8 args"); ++}
View file
_service
Changed
@@ -2,7 +2,7 @@ <service name="tar_scm"> <param name="scm">git</param> <param name="url">git@gitee.com:src-openeuler/perl-Devel-Size.git</param> - <param name="revision">0bd53b02bdfcd1fabb25ca3bbc164f37a71ecbd1</param> + <param name="revision">master</param> <param name="exclude">*</param> <param name="extract">*</param> </service>
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2