[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Pre-approval for perl/5.10.1-16



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   ntyni@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 <ntyni@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 <ntyni@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 <ntyni@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 <ntyni@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

Reply to: