Hi release team, would you be OK with some or all of these changes for Squeeze?
perl (5.10.1-16) UNRELEASED; urgency=low * Improve LC_NUMERIC documentation. (Closes: #379329) * Fix sprintf not to ignore LC_NUMERIC with constants. (Closes: #601549) * Fix stack pointer corruption in pp_concat() with "use encoding". (Closes: #596105) Full debdiff attached. Thanks for your work, -- Niko Tyni nt...@debian.org
diff -Nru perl-5.10.1/debian/changelog perl-5.10.1/debian/changelog --- perl-5.10.1/debian/changelog 2010-10-06 21:45:02.000000000 +0300 +++ perl-5.10.1/debian/changelog 2010-10-31 15:13:01.000000000 +0200 @@ -1,3 +1,12 @@ +perl (5.10.1-16) UNRELEASED; urgency=low + + * Improve LC_NUMERIC documentation. (Closes: #379329) + * Fix sprintf not to ignore LC_NUMERIC with constants. (Closes: #601549) + * Fix stack pointer corruption in pp_concat() with "use encoding". + (Closes: #596105) + + -- Niko Tyni <nt...@debian.org> Sun, 31 Oct 2010 14:05:08 +0200 + perl (5.10.1-15) unstable; urgency=low * Include the Text::Tabs license in debian/copyright. Thanks to "v.nix.is". diff -Nru perl-5.10.1/debian/patches/fixes/assorted_docs.diff perl-5.10.1/debian/patches/fixes/assorted_docs.diff --- perl-5.10.1/debian/patches/fixes/assorted_docs.diff 2010-10-06 21:46:28.000000000 +0300 +++ perl-5.10.1/debian/patches/fixes/assorted_docs.diff 2010-10-31 15:13:24.000000000 +0200 @@ -9,7 +9,7 @@ 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/lib/Math/BigInt/CalcEmu.pm b/lib/Math/BigInt/CalcEmu.pm -index 79efac6..5810f5d 100644 +index 79efac6..5810f5db 100644 --- a/lib/Math/BigInt/CalcEmu.pm +++ b/lib/Math/BigInt/CalcEmu.pm @@ -295,7 +295,7 @@ Math::BigInt::CalcEmu - Emulate low-level math with BigInt code diff -Nru perl-5.10.1/debian/patches/fixes/concat-stack-corruption.diff perl-5.10.1/debian/patches/fixes/concat-stack-corruption.diff --- perl-5.10.1/debian/patches/fixes/concat-stack-corruption.diff 1970-01-01 02:00:00.000000000 +0200 +++ perl-5.10.1/debian/patches/fixes/concat-stack-corruption.diff 2010-10-31 15:13:28.000000000 +0200 @@ -0,0 +1,37 @@ +From: Niko Tyni <nt...@debian.org> +Subject: Fix stack pointer corruption in pp_concat() with 'use encoding' +Bug-Debian: http://bugs.debian.org/596105 +Bug: http://rt.perl.org/rt3/Ticket/Display.html?id=78674 +Origin: upstream, http://perl5.git.perl.org/perl.git/commit/e3393f51d48d8b790e26324eb0336fac9689fa46 + +If the stack is reallocated during pp_concat() and 'use encoding' in +effect, the stack pointer gets corrupted, causing memory allocation bugs +and the like. + +--- + pp_hot.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/pp_hot.c b/pp_hot.c +index c792812..65e893a 100644 +--- a/pp_hot.c ++++ b/pp_hot.c +@@ -285,6 +285,8 @@ PP(pp_concat) + rbyte = !DO_UTF8(right); + } + if (lbyte != rbyte) { ++ /* sv_utf8_upgrade_nomg() may reallocate the stack */ ++ PUTBACK; + if (lbyte) + sv_utf8_upgrade_nomg(TARG); + else { +@@ -293,6 +295,7 @@ PP(pp_concat) + sv_utf8_upgrade_nomg(right); + rpv = SvPV_const(right, rlen); + } ++ SPAGAIN; + } + sv_catpvn_nomg(TARG, rpv, rlen); + +-- +tg: (daf8b46..) fixes/concat-stack-corruption (depends on: upstream) diff -Nru perl-5.10.1/debian/patches/fixes/lc-numeric-docs.diff perl-5.10.1/debian/patches/fixes/lc-numeric-docs.diff --- perl-5.10.1/debian/patches/fixes/lc-numeric-docs.diff 1970-01-01 02:00:00.000000000 +0200 +++ perl-5.10.1/debian/patches/fixes/lc-numeric-docs.diff 2010-10-31 15:13:27.000000000 +0200 @@ -0,0 +1,95 @@ +From: Niko Tyni <nt...@debian.org> +Subject: LC_NUMERIC documentation fixes +Bug-Debian: http://bugs.debian.org/379329 +Bug: http://rt.perl.org/rt3/Ticket/Display.html?id=78452 +Origin: upstream, http://perl5.git.perl.org/perl.git/commit/903eb63f7d8d47a38971a8e9af7201b9927882cf + +LC_NUMERIC documentation updates fixing two errors: + + - the early parts of perllocale.pod still say printf() uses LC_NUMERIC + with just 'use locale' when actually a POSIX::setlocale() call is + also needed + + - format() hasn't used LC_NUMERIC unconditionally since 5.005_03 + (commit 097ee67dff1c60f201bc09435bc6eaeeafcd8123). + +Test cases from the upstream commit dropped for the sake of simplicity. + +--- + pod/perlform.pod | 20 ++++++++------------ + pod/perllocale.pod | 15 ++++++--------- + 2 files changed, 14 insertions(+), 21 deletions(-) + +diff --git a/pod/perlform.pod b/pod/perlform.pod +index 3cfa1b7..df0f0a1 100644 +--- a/pod/perlform.pod ++++ b/pod/perlform.pod +@@ -166,9 +166,9 @@ token on the first line. If an expression evaluates to a number with a + decimal part, and if the corresponding picture specifies that the decimal + part should appear in the output (that is, any picture except multiple "#" + characters B<without> an embedded "."), the character used for the decimal +-point is B<always> determined by the current LC_NUMERIC locale. This +-means that, if, for example, the run-time environment happens to specify a +-German locale, "," will be used instead of the default ".". See ++point is determined by the current LC_NUMERIC locale if C<use locale> is in ++effect. This means that, if, for example, the run-time environment happens ++to specify a German locale, "," will be used instead of the default ".". See + L<perllocale> and L<"WARNINGS"> for more information. + + +@@ -442,15 +442,11 @@ Lexical variables (declared with "my") are not visible within a + format unless the format is declared within the scope of the lexical + variable. (They weren't visible at all before version 5.001.) + +-Formats are the only part of Perl that unconditionally use information +-from a program's locale; if a program's environment specifies an +-LC_NUMERIC locale, it is always used to specify the decimal point +-character in formatted output. Perl ignores all other aspects of locale +-handling unless the C<use locale> pragma is in effect. Formatted output +-cannot be controlled by C<use locale> because the pragma is tied to the +-block structure of the program, and, for historical reasons, formats +-exist outside that block structure. See L<perllocale> for further +-discussion of locale handling. ++If a program's environment specifies an LC_NUMERIC locale and C<use ++locale> is in effect when the format is declared, the locale is used ++to specify the decimal point character in formatted output. Formatted ++output cannot be controlled by C<use locale> at the time when write() ++is called. See L<perllocale> for further discussion of locale handling. + + Within strings that are to be displayed in a fixed length text field, + each control character is substituted by a space. (But remember the +diff --git a/pod/perllocale.pod b/pod/perllocale.pod +index 3c2b3ab..91060c4 100644 +--- a/pod/perllocale.pod ++++ b/pod/perllocale.pod +@@ -115,8 +115,7 @@ ucfirst(), and lcfirst()) use C<LC_CTYPE> + + =item * + +-B<The formatting functions> (printf(), sprintf() and write()) use +-C<LC_NUMERIC> ++B<Format declarations> (format()) use C<LC_NUMERIC> + + =item * + +@@ -967,13 +966,11 @@ system's implementation of the locale system than by Perl. + + =head2 write() and LC_NUMERIC + +-Formats are the only part of Perl that unconditionally use information +-from a program's locale; if a program's environment specifies an +-LC_NUMERIC locale, it is always used to specify the decimal point +-character in formatted output. Formatted output cannot be controlled by +-C<use locale> because the pragma is tied to the block structure of the +-program, and, for historical reasons, formats exist outside that block +-structure. ++If a program's environment specifies an LC_NUMERIC locale and C<use ++locale> is in effect when the format is declared, the locale is used ++to specify the decimal point character in formatted output. Formatted ++output cannot be controlled by C<use locale> at the time when write() ++is called. + + =head2 Freely available locale definitions + +-- +tg: (daf8b46..) fixes/lc-numeric-docs (depends on: upstream) diff -Nru perl-5.10.1/debian/patches/fixes/lc-numeric-sprintf.diff perl-5.10.1/debian/patches/fixes/lc-numeric-sprintf.diff --- perl-5.10.1/debian/patches/fixes/lc-numeric-sprintf.diff 1970-01-01 02:00:00.000000000 +0200 +++ perl-5.10.1/debian/patches/fixes/lc-numeric-sprintf.diff 2010-10-31 15:13:28.000000000 +0200 @@ -0,0 +1,29 @@ +From: Niko Tyni <nt...@debian.org> +Subject: Fix sprintf not to ignore LC_NUMERIC with constants +Bug-Debian: http://bugs.debian.org/601549 +Bug: http://rt.perl.org/rt3/Ticket/Display.html?id=78632 +Origin: upstream, http://perl5.git.perl.org/perl.git/commit/b3fd61496ebc585b1115807e3195f17714662a09 + +Don't fold constants in sprintf() if locales are used + +An upstream regression in 5.10.1 made sprintf() ignore LC_NUMERIC for +numeric constants. + +--- + op.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/op.c b/op.c +index dc9fd64..a2481af 100644 +--- a/op.c ++++ b/op.c +@@ -2466,6 +2466,7 @@ Perl_fold_constants(pTHX_ register OP *o) + case OP_SLE: + case OP_SGE: + case OP_SCMP: ++ case OP_SPRINTF: + /* XXX what about the numeric ops? */ + if (PL_hints & HINT_LOCALE) + goto nope; +-- +tg: (daf8b46..) fixes/lc-numeric-sprintf (depends on: upstream) diff -Nru perl-5.10.1/debian/patches/patchlevel perl-5.10.1/debian/patches/patchlevel --- perl-5.10.1/debian/patches/patchlevel 2010-10-06 21:46:31.000000000 +0300 +++ perl-5.10.1/debian/patches/patchlevel 2010-10-31 15:13:28.000000000 +0200 @@ -1,4 +1,4 @@ -Subject: List packaged patches for 5.10.1-15 in patchlevel.h +Subject: List packaged patches for 5.10.1-16 in patchlevel.h Origin: vendor Bug-Debian: http://bugs.debian.org/567489 @@ -8,7 +8,7 @@ --- perl/patchlevel.bak +++ perl/patchlevel.h -@@ -133,0 +134,47 @@ +@@ -133,0 +134,50 @@ + ,"DEBPKG:debian/arm_thread_stress_timeout - http://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts" + ,"DEBPKG:debian/cpan_config_path - Set location of CPAN::Config to /etc/perl as /usr may not be writable." + ,"DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN." @@ -55,4 +55,7 @@ + ,"DEBPKG:fixes/fcgi-test - Fix a failure in CGI/t/fast.t when FCGI is installed" + ,"DEBPKG:fixes/hurd-ccflags - http://bugs.debian.org/587901 Make hints/gnu.sh append to $ccflags rather than overriding them" + ,"DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts" -+ ,"DEBPKG:patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.10.1-15 in patchlevel.h" ++ ,"DEBPKG:fixes/lc-numeric-docs - http://bugs.debian.org/379329 [perl #78452] [903eb63] LC_NUMERIC documentation fixes" ++ ,"DEBPKG:fixes/lc-numeric-sprintf - http://bugs.debian.org/601549 [perl #78632] [b3fd614] Fix sprintf not to ignore LC_NUMERIC with constants" ++ ,"DEBPKG:fixes/concat-stack-corruption - http://bugs.debian.org/596105 [perl #78674] [e3393f5] Fix stack pointer corruption in pp_concat() with 'use encoding'" ++ ,"DEBPKG:patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.10.1-16 in patchlevel.h" diff -Nru perl-5.10.1/debian/patches/series perl-5.10.1/debian/patches/series --- perl-5.10.1/debian/patches/series 2010-10-06 21:46:31.000000000 +0300 +++ perl-5.10.1/debian/patches/series 2010-10-31 15:13:28.000000000 +0200 @@ -44,4 +44,7 @@ fixes/fcgi-test.diff -p1 fixes/hurd-ccflags.diff -p1 debian/squelch-locale-warnings.diff -p1 +fixes/lc-numeric-docs.diff -p1 +fixes/lc-numeric-sprintf.diff -p1 +fixes/concat-stack-corruption.diff -p1 patchlevel -p1